Merge tag 'LA.UM.9.14.1.r1-21100-QCM6490.QISI15.0' of https://git.codelinaro.org/clo/la/kernel/msm-5.4 into android13-5.4-lahaina

LA.UM.9.14.1.r1-21100-QCM6490.QISI15.0

* tag 'LA.UM.9.14.1.r1-21100-QCM6490.QISI15.0' of https://git.codelinaro.org/clo/la/kernel/msm-5.4:
  msm:kgsl: Prevent sign extension on alignments
  reverting all USB patches
  msm: eva: OOB write issue in fence processing
  kgsl: gmu: Use num_vma for safe GMU VMAs array access
  net: Add netdevice notification for bridge activity
  bridge: port structure members from 5.4 kernel
  net: bridge: Fix for co-located mode
  UPSTREAM: usb: gadget: configfs: Add frame-based frame format support
  kgsl: Add buffer overflow check for perfcounter dynamic list
  usb: gadget: uvc: Add grey and I420 YUV UVC format support
  mtd: msm_qpic_nand: Use flash device ECC capability for erase page
  mtd: msm_qpic_nand: check for page_erased bit along with op_err
  UPSTREAM: usb: dwc3: Wait for EndXfer command completion
  netfilter: fix NATTYPE refresh timeout issue
  usb: gadget: uvc: Modify UVC_NUM_REQUESTS
  reverting enum-conversion, Handle CPU state and all USB patches
  msm: cvp: Fix for kernel address exposure vulnerability to user
  cnss: Init reserved memory device
  cnss: Dump stack by stack_trace_print
  cnss: Add support for building CNSS as a loadable module
  FROMLIST: media: venus: Add a check for packet size
  Add configures to enable CNSS platform driver
  FROMLIST: media: venus: Fix OOB read due to missing payload bound check
  dma-mapping-fast: Fix PMD offset calculation for non-2M aligned start aperture
  crypto: qcedev - fix UAF in crypto-qti driver
  msm: adsprpc: Prevent refcount increment for duplicate dmahandles
  dmaengine: msm_gpi: fix to avoid null pointer access
  mdm: ipa3: support IPoGRE new IOCTL and proc params
  msm: mhi_dev: Workqueue to handle host wakeup in M3+D0
  iommu: Fix invalid access in av8l_fast_unmap_public
  msm: mhi_dev: Handle host wakeup in M3/D0
  msm: ep_pcie: Wake host in D3cold handling if wake is pending
  FROMGIT: media: venus: hfi: add a check to handle OOB in sfr region
  FROMGIT: media: venus: hfi: add check to handle incorrect queue size
  FROMGIT: media: venus: hfi_parser: add check to avoid out of bound access
  Revert "msm_ipa: Install exception rule for PPPoE-MPLS"
  firmware: qcom_scm: do not clear dump mode from shutdown
  msm: adsprpc: Avoid taking reference for group_info
  adsprpc: Handle UAF scenario in put_args
  msm: eva: Adding kref count for cvp_get_inst_from_id
  wifi: cfg80211: Increase akm_suites array size in cfg80211_crypto_settings
  thermal: qcom: Add support to update tsens trip based on nvmem data

 Conflicts:
	Makefile
	arch/arm64/include/asm/cputype.h
	drivers/char/adsprpc.c
	drivers/hid/hid-ids.h
	drivers/net/usb/rtl8150.c
	drivers/platform/Kconfig
	drivers/platform/Makefile
	drivers/soc/qcom/mdt_loader.c
	drivers/soc/qcom/rpmh-rsc.c
	drivers/usb/core/quirks.c
	drivers/usb/dwc3/dwc3-qcom.c
	drivers/usb/dwc3/gadget.c
	drivers/usb/gadget/function/f_fs.c
	drivers/usb/gadget/function/f_ncm.c
	mm/slub.c
	mm/zsmalloc.c
	net/ipv4/tcp_output.c
	scripts/Makefile.extrawarn

Change-Id: Ia4f3356ed4a105a2f3b0feda3e78725a01a970b2
This commit is contained in:
Michael Bestas 2026-04-30 20:46:30 +03:00
commit 9f0d3e60bc
No known key found for this signature in database
GPG key ID: CC95044519BE6669
132 changed files with 1676 additions and 1149 deletions

View file

@ -2,7 +2,7 @@
/*
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
*
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef _UAPI_MSM_IPA_H_
@ -152,8 +152,9 @@
#define IPA_IOCTL_SET_EXT_ROUTER_MODE 95
#define IPA_IOCTL_ADD_DEL_DSCP_PCP_MAPPING 96
#define IPA_IOCTL_SEND_VLAN_MUXID_MAPPING 97
#define IPA_IOCTL_SEND_TUNNEL_TEMPLATE_INFO 98
#define IPA_IOCTL_QUERY_TUNNEL_FEATURE 99
#define IPA_IOCTL_SEND_TUNNEL_TEMPLATE_INFO 98
#define IPA_IOCTL_QUERY_TUNNEL_FEATURE 99
#define IPA_IOCTL_ADD_IPOGRE_MAPPING 100
/**
* max size of the header to be inserted
*/
@ -976,8 +977,12 @@ enum ipa_eth_pdu_evt {
#define IPA_ENABLE_ETH_PDU_MODE_EVENT_MAX IPA_ENABLE_ETH_PDU_MODE_EVENT_MAX
};
#define IPA_EVENT_MAX_NUM (IPA_ENABLE_ETH_PDU_MODE_EVENT_MAX)
enum ipa_ipogre_event {
IPA_IPOGRE_NOTIFY_EVENT = IPA_ENABLE_ETH_PDU_MODE_EVENT_MAX,
IPA_IPOGRE_EVENT_MAX
#define IPA_IPOGRE_EVENT_MAX IPA_IPOGRE_EVENT_MAX
};
#define IPA_EVENT_MAX_NUM (IPA_IPOGRE_EVENT_MAX)
#define IPA_EVENT_MAX ((int)IPA_EVENT_MAX_NUM)
/**
@ -1140,48 +1145,6 @@ static inline const char *exception_type_as_str(enum ipa_exception_type t)
"???";
}
/**
* Macro ipa_exception_type_pppoe
*
* This macro is for describing which field is to be looked at for
* exception path consideration.
*
* NOTE 1: The field implies an offset into the packet under
* consideration. This offset will be calculated on behalf of
* the user of this API.
*
* NOTE 2: When exceptions are generated/sent in an ipa_exception
* structure, they will considered to be from the upload
* perspective. And when appropriate, a corresponding, and
* perhaps inverted, downlink exception will be automatically
* created on the callers behalf. As an example: If a
* FIELD_UDP_SRC_PORT is sent, an uplink exception will be
* created for udp source port, and a corresponding
* FIELD_UDP_DST_PORT will be automatically created for the
* downlink.
*/
#define FIELD_IP_PROTOCOL_PPPOE (FIELD_ETHER_TYPE + 1)
#define FIELD_TCP_SRC_PORT_PPPOE (FIELD_IP_PROTOCOL_PPPOE + 1)
#define FIELD_TCP_DST_PORT_PPPOE (FIELD_TCP_SRC_PORT_PPPOE + 1)
#define FIELD_UDP_SRC_PORT_PPPOE (FIELD_TCP_DST_PORT_PPPOE + 1)
#define FIELD_UDP_DST_PORT_PPPOE (FIELD_UDP_SRC_PORT_PPPOE + 1)
#define FIELD_ETHER_TYPE_PPPOE (FIELD_UDP_DST_PORT_PPPOE + 1)
#define FIELD_PPPOE_MAX (FIELD_ETHER_TYPE_PPPOE + 1)
/* Function to read PPPoE exception in string format */
static inline const char *pppoe_exception_type_as_str(uint32_t t)
{
return
(t == FIELD_IP_PROTOCOL_PPPOE) ? "pppoe_ip_protocol" :
(t == FIELD_TCP_SRC_PORT_PPPOE) ? "pppoe_tcp_src_port" :
(t == FIELD_TCP_DST_PORT_PPPOE) ? "pppoe_tcp_dst_port" :
(t == FIELD_UDP_SRC_PORT_PPPOE) ? "pppoe_udp_src_port" :
(t == FIELD_UDP_DST_PORT_PPPOE) ? "pppoe_udp_dst_port" :
(t == FIELD_ETHER_TYPE_PPPOE) ? "pppoe_ether_type" :
(t == FIELD_PPPOE_MAX) ? "pppoe_max" :
"???";
}
#define IP_TYPE_EXCEPTION(x) \
((x) == FIELD_IP_PROTOCOL || \
(x) == FIELD_TCP_SRC_PORT || \
@ -1262,7 +1225,6 @@ struct ipa_field_val_equation_gen {
* @payload_length: Payload length.
* @ext_attrib_mask: Extended attributes.
* @l2tp_udp_next_hdr: next header in L2TP tunneling
* @p_exception : exception to enable for mpls-pppoe
* @field_val_equ: for finding a value at a particular offset
*/
struct ipa_rule_attrib {
@ -1308,7 +1270,7 @@ struct ipa_rule_attrib {
__u16 payload_length;
__u32 ext_attrib_mask;
__u8 l2tp_udp_next_hdr;
__u8 p_exception;
__u8 padding1;
struct ipa_field_val_equation_gen fld_val_eq;
};
@ -1594,9 +1556,11 @@ enum ipa_hdr_proc_type {
IPA_HDR_PROC_EoGRE_HEADER_REMOVE,
IPA_HDR_PROC_WWAN_TO_ETHII_EX,
IPA_HDR_PROC_GRE_HEADER_ADD,
IPA_HDR_PROC_GRE_HEADER_REMOVE
IPA_HDR_PROC_GRE_HEADER_REMOVE,
IPA_HDR_PROC_IPOGRE_HEADER_ADD,
IPA_HDR_PROC_IPOGRE_HEADER_REMOVE
};
#define IPA_HDR_PROC_MAX (IPA_HDR_PROC_GRE_HEADER_REMOVE + 1)
#define IPA_HDR_PROC_MAX (IPA_HDR_PROC_IPOGRE_HEADER_REMOVE + 1)
/**
* struct ipa_rt_rule - attributes of a routing rule
@ -2001,6 +1965,68 @@ struct ipa_ioc_eogre_info {
struct IpaDscpVlanPcpMap_t map_info;
};
#define MAX_FLOW_PER_IPOGRE_TUNNEL 10
/**
* struct ipa_ipogre_info -
* @ipv4_src: Specifies source v4 address if GRE tunnel is ipv4
* @ipv4_dst: Specifies destination v4 address if GRE tunnel is ipv4
* @ipv6_src: Specifies source v6 address if GRE tunnel is ipv6
* @ipv6_dst: Specifies destination v6 address if GRE tunnel is ipv6
* @iptype: Specifies GRE tunnel's ip address type
* @tunnel_id: Specifies tunnel id
*/
struct ipa_ipogre_tunnel_info {
uint32_t ipv4_src;
uint32_t ipv4_dst;
uint32_t ipv6_src[4];
uint32_t ipv6_dst[4];
enum ipa_ip_type iptype;
uint8_t tunnel_id;
} __packed;
/**
* struct ipa_ipogre_info -
* @ipv4_src: Specifies source v4 address if GRE tunnel is ipv4
* @ipv4_src_subnet: Specifies source v4 address subnet if GRE tunnel is ipv4
* @ipv4_dst: Specifies destination v4 address if GRE tunnel is ipv4
* @ipv4_dst_subnet: Specifies destination v4 address subnet if GRE tunnel is ipv4
* @ipv6_src: Specifies source v6 address if GRE tunnel is ipv6
* @ipv6_src_subnet: Specifies source v6 address subnet if GRE tunnel is ipv6
* @ipv6_dst: Specifies destination v6 address if GRE tunnel is ipv6
* @ipv6_dst_subnet: Specifies destination v6 address subnet if GRE tunnel is ipv6
* @iptype: Specifies GRE tunnel's ip address type
* @protocol: Specifies protocol of the data traffic
*/
struct ipa_ipogre_flow_info {
uint32_t ipv4_src;
uint32_t ipv4_src_subnet;
uint32_t ipv4_dst;
uint32_t ipv4_dst_subnet;
uint32_t ipv6_src[4];
uint32_t ipv6_dst[4];
uint32_t src_port;
uint32_t dst_port;
enum ipa_ip_type iptype;
uint8_t protocol;
uint8_t ipv6_src_subnet;
uint8_t ipv6_dst_subnet;
} __packed;
/**
* struct ipa_ipogre_info -
* @ipogre_tunnel_info: Specifies tunnel information
* @ipogre_flow_info: Specifies flows to be offloaded
* @ipa_ipogre_num_flow: Specifies number of flow to be offloaded
*/
struct ipa_ioc_ipogre_info {
struct ipa_ipogre_tunnel_info ipogre_tunnel_info;
struct ipa_ipogre_flow_info ipogre_flow_info[MAX_FLOW_PER_IPOGRE_TUNNEL];
uint8_t ipa_ipogre_num_flow;
};
/**
* struct ipa_eogre_header_add_procparams -
* @eth_hdr_retained: Specifies if Ethernet header is retained or not
@ -2092,6 +2118,45 @@ struct ipa_gre_hdr_proc_ctx_params {
struct ipa_gre_header_remove_procparams hdr_remove_param;
};
/**
* struct ipa_ipogre_header_add_procparams -
* @input_ip_version: Specifies if Input header is IPV4(0) or IPV6(1)
* @output_ip_version: Specifies if template header's outer IP is IPV4(0)
* or IPV6(1)
* @Tunnel_Id: Tunnel id associated with the header.
* @Mux_Id: Specifies mux id associated with the template header
*/
struct ipa_ipogre_header_add_procparams {
uint32_t input_ip_version : 1;
uint32_t output_ip_version : 1;
uint32_t tunnel_id : 4;
uint32_t mux_id : 8;
uint32_t reserved :18;
};
/**
* struct ipa_ipogre_header_remove_procparams -
* @hdr_len_remove: Specifies how much (in bytes) of the header needs
* to be removed
* @input_ip_version: Specifies if Input header is IPV4(0) or IPV6(1)
* @Tunnel_Id: Tunnel id associated with the header.
*/
struct ipa_ipogre_header_remove_procparams {
uint32_t hdr_len_remove : 8;
uint32_t input_ip_version : 1;
uint32_t tunnel_id : 4;
uint32_t reserved :19;
};
/**
* struct ipa_ipogre_hdr_proc_ctx_params -
* @hdr_add_param: parameters for header add
* @hdr_remove_param: parameters for header remove
*/
struct ipa_ipogre_hdr_proc_ctx_params {
struct ipa_ipogre_header_add_procparams hdr_add_param;
struct ipa_ipogre_header_remove_procparams hdr_remove_param;
};
/**
* struct ipa_eth_II_to_eth_II_ex_procparams -
* @input_ethhdr_negative_offset: Specifies where the ethernet hdr offset is
@ -2154,6 +2219,7 @@ struct ipa_hdr_proc_ctx_add {
struct ipa_eth_II_to_eth_II_ex_procparams generic_params;
struct ipa_wwan_to_eth_II_ex_procparams generic_params_v2;
struct ipa_gre_hdr_proc_ctx_params gre_params;
struct ipa_ipogre_hdr_proc_ctx_params ipogre_params;
};
#define IPA_L2TP_HDR_PROC_SUPPORT
@ -4264,6 +4330,10 @@ struct ipa_ioc_dscp_pcp_map_info {
IPA_IOCTL_QUERY_TUNNEL_FEATURE, \
uint8_t)
#define IPA_IOC_ADD_IPoGRE_MAPPING _IOWR(IPA_IOC_MAGIC, \
IPA_IOCTL_ADD_IPOGRE_MAPPING, \
struct ipa_ioc_ipogre_info)
/*
* unique magic number of the Tethering bridge ioctls
*/

View file

@ -2465,6 +2465,13 @@ enum nl80211_commands {
* @NL80211_ATTR_HE_6GHZ_CAPABILITY: HE 6 GHz Band Capability element (from
* association request when used with NL80211_CMD_NEW_STATION).
*
* @NL80211_ATTR_MAX_NUM_AKM_SUITES: U16 attribute. Indicates maximum number of
* AKM suites allowed for %NL80211_CMD_CONNECT, %NL80211_CMD_ASSOCIATE and
* %NL80211_CMD_START_AP in %NL80211_CMD_GET_WIPHY response. If this
* attribute is not present userspace shall consider maximum number of AKM
* suites allowed as %NL80211_MAX_NR_AKM_SUITES which is the legacy maximum
* number prior to the introduction of this attribute.
*
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
@ -2942,6 +2949,8 @@ enum nl80211_attrs {
NL80211_ATTR_HE_6GHZ_CAPABILITY,
NL80211_ATTR_MAX_NUM_AKM_SUITES = 316,
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST,
@ -2994,6 +3003,11 @@ enum nl80211_attrs {
#define NL80211_HE_MIN_CAPABILITY_LEN 16
#define NL80211_HE_MAX_CAPABILITY_LEN 54
#define NL80211_MAX_NR_CIPHER_SUITES 5
/*
* NL80211_MAX_NR_AKM_SUITES is obsolete when %NL80211_ATTR_MAX_NUM_AKM_SUITES
* present in %NL80211_CMD_GET_WIPHY response.
*/
#define NL80211_MAX_NR_AKM_SUITES 2
#define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10

View file

@ -597,5 +597,63 @@ struct UVC_FRAME_MJPEG(n) { \
__le32 dwFrameInterval[n]; \
} __attribute__ ((packed))
/* Frame Based Payload - 3.1.1. Frame Based Video Format Descriptor */
struct uvc_format_framebased {
__u8 bLength;
__u8 bDescriptorType;
__u8 bDescriptorSubType;
__u8 bFormatIndex;
__u8 bNumFrameDescriptors;
__u8 guidFormat[16];
__u8 bBitsPerPixel;
__u8 bDefaultFrameIndex;
__u8 bAspectRatioX;
__u8 bAspectRatioY;
__u8 bmInterfaceFlags;
__u8 bCopyProtect;
__u8 bVariableSize;
} __attribute__((__packed__));
#define UVC_DT_FORMAT_FRAMEBASED_SIZE 28
/* Frame Based Payload - 3.1.2. Frame Based Video Frame Descriptor */
struct uvc_frame_framebased {
__u8 bLength;
__u8 bDescriptorType;
__u8 bDescriptorSubType;
__u8 bFrameIndex;
__u8 bmCapabilities;
__u16 wWidth;
__u16 wHeight;
__u32 dwMinBitRate;
__u32 dwMaxBitRate;
__u32 dwDefaultFrameInterval;
__u8 bFrameIntervalType;
__u32 dwBytesPerLine;
__u32 dwFrameInterval[];
} __attribute__((__packed__));
#define UVC_DT_FRAME_FRAMEBASED_SIZE(n) (26+4*(n))
#define UVC_FRAME_FRAMEBASED(n) \
uvc_frame_framebased_##n
#define DECLARE_UVC_FRAME_FRAMEBASED(n) \
struct UVC_FRAME_FRAMEBASED(n) { \
__u8 bLength; \
__u8 bDescriptorType; \
__u8 bDescriptorSubType; \
__u8 bFrameIndex; \
__u8 bmCapabilities; \
__u16 wWidth; \
__u16 wHeight; \
__u32 dwMinBitRate; \
__u32 dwMaxBitRate; \
__u32 dwDefaultFrameInterval; \
__u8 bFrameIntervalType; \
__u32 dwBytesPerLine; \
__u32 dwFrameInterval[n]; \
} __attribute__ ((packed))
#endif /* __LINUX_USB_VIDEO_H */