Merge tag 'LA.UM.9.14.r1-23100-LAHAINA.QSSI14.0' of https://git.codelinaro.org/clo/la/kernel/msm-5.4 into android13-5.4-lahaina

"LA.UM.9.14.r1-23100-LAHAINA.QSSI14.0"

* tag 'LA.UM.9.14.r1-23100-LAHAINA.QSSI14.0' of https://git.codelinaro.org/clo/la/kernel/msm-5.4:
  Revert "ALSA: compress: Allow pause and resume during draining"
  ALSA: compress: Allow pause and resume during draining
  msm: kgsl: Prevent wrap around during user address mapping
  msm: kgsl: Limit the syncpoint count for AUX commands
  msm: kgsl: Prevent wrap around during user address mapping
  Configured process_madvise with upstream syscall number
  iommu: Fix missing return check of arm_lpae_init_pte
  usb: gadget: cdev: Don't use spinlock with sleeping functions
  securemsm-kernel: Fix multiple listener registration on same fd
  msm: kgsl: Limit the syncpoint count for AUX commands
  net: qrtr: use new update_marker api
  char: virtio_eavb: use new update_marker api
  usb: kpi: update_marker api for USB suspend resume

Change-Id: Id82b63ff555fbc7101b41a10c1ffbef3762627bd
This commit is contained in:
Michael Bestas 2023-11-09 14:27:54 +02:00
commit 9272f3a35c
No known key found for this signature in database
GPG Key ID: CC95044519BE6669
27 changed files with 122 additions and 36 deletions

View File

@ -475,4 +475,8 @@
543 common fspick sys_fspick 543 common fspick sys_fspick
544 common pidfd_open sys_pidfd_open 544 common pidfd_open sys_pidfd_open
# 545 reserved for clone3 # 545 reserved for clone3
546 common process_madvise sys_process_madvise # 546 reserved for close_range
# 547 reserved for openat2
# 548 reserved for pidfd_getfd
# 549 reserved for faccessat2
550 common process_madvise sys_process_madvise

View File

@ -449,4 +449,8 @@
433 common fspick sys_fspick 433 common fspick sys_fspick
434 common pidfd_open sys_pidfd_open 434 common pidfd_open sys_pidfd_open
435 common clone3 sys_clone3 435 common clone3 sys_clone3
436 common process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise

View File

@ -38,7 +38,7 @@
#define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE + 5) #define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE + 5)
#define __ARM_NR_COMPAT_END (__ARM_NR_COMPAT_BASE + 0x800) #define __ARM_NR_COMPAT_END (__ARM_NR_COMPAT_BASE + 0x800)
#define __NR_compat_syscalls 437 #define __NR_compat_syscalls 441
#endif #endif
#define __ARCH_WANT_SYS_CLONE #define __ARCH_WANT_SYS_CLONE

View File

@ -879,7 +879,7 @@ __SYSCALL(__NR_fspick, sys_fspick)
__SYSCALL(__NR_pidfd_open, sys_pidfd_open) __SYSCALL(__NR_pidfd_open, sys_pidfd_open)
#define __NR_clone3 435 #define __NR_clone3 435
__SYSCALL(__NR_clone3, sys_clone3) __SYSCALL(__NR_clone3, sys_clone3)
#define __NR_process_madvise 436 #define __NR_process_madvise 440
__SYSCALL(__NR_process_madvise, sys_process_madvise) __SYSCALL(__NR_process_madvise, sys_process_madvise)
/* /*

View File

@ -356,4 +356,8 @@
433 common fspick sys_fspick 433 common fspick sys_fspick
434 common pidfd_open sys_pidfd_open 434 common pidfd_open sys_pidfd_open
# 435 reserved for clone3 # 435 reserved for clone3
436 common process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise

View File

@ -435,4 +435,8 @@
433 common fspick sys_fspick 433 common fspick sys_fspick
434 common pidfd_open sys_pidfd_open 434 common pidfd_open sys_pidfd_open
# 435 reserved for clone3 # 435 reserved for clone3
436 common process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise

View File

@ -441,4 +441,8 @@
433 common fspick sys_fspick 433 common fspick sys_fspick
434 common pidfd_open sys_pidfd_open 434 common pidfd_open sys_pidfd_open
435 common clone3 sys_clone3 435 common clone3 sys_clone3
436 common process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise

View File

@ -374,4 +374,8 @@
433 n32 fspick sys_fspick 433 n32 fspick sys_fspick
434 n32 pidfd_open sys_pidfd_open 434 n32 pidfd_open sys_pidfd_open
435 n32 clone3 __sys_clone3 435 n32 clone3 __sys_clone3
436 n32 process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 n32 process_madvise sys_process_madvise

View File

@ -350,4 +350,8 @@
433 n64 fspick sys_fspick 433 n64 fspick sys_fspick
434 n64 pidfd_open sys_pidfd_open 434 n64 pidfd_open sys_pidfd_open
435 n64 clone3 __sys_clone3 435 n64 clone3 __sys_clone3
436 n64 process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 n64 process_madvise sys_process_madvise

View File

@ -433,4 +433,8 @@
433 common fspick sys_fspick 433 common fspick sys_fspick
434 common pidfd_open sys_pidfd_open 434 common pidfd_open sys_pidfd_open
435 common clone3 sys_clone3_wrapper 435 common clone3 sys_clone3_wrapper
436 common process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise

View File

@ -517,4 +517,8 @@
433 common fspick sys_fspick 433 common fspick sys_fspick
434 common pidfd_open sys_pidfd_open 434 common pidfd_open sys_pidfd_open
435 nospu clone3 ppc_clone3 435 nospu clone3 ppc_clone3
436 common process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise

View File

@ -438,4 +438,8 @@
433 common fspick sys_fspick sys_fspick 433 common fspick sys_fspick sys_fspick
434 common pidfd_open sys_pidfd_open sys_pidfd_open 434 common pidfd_open sys_pidfd_open sys_pidfd_open
435 common clone3 sys_clone3 sys_clone3 435 common clone3 sys_clone3 sys_clone3
443 common process_madvise sys_process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise sys_process_madvise

View File

@ -438,4 +438,8 @@
433 common fspick sys_fspick 433 common fspick sys_fspick
434 common pidfd_open sys_pidfd_open 434 common pidfd_open sys_pidfd_open
# 435 reserved for clone3 # 435 reserved for clone3
436 common process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise

View File

@ -481,4 +481,8 @@
433 common fspick sys_fspick 433 common fspick sys_fspick
434 common pidfd_open sys_pidfd_open 434 common pidfd_open sys_pidfd_open
# 435 reserved for clone3 # 435 reserved for clone3
436 common process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise

View File

@ -440,4 +440,8 @@
433 i386 fspick sys_fspick __ia32_sys_fspick 433 i386 fspick sys_fspick __ia32_sys_fspick
434 i386 pidfd_open sys_pidfd_open __ia32_sys_pidfd_open 434 i386 pidfd_open sys_pidfd_open __ia32_sys_pidfd_open
435 i386 clone3 sys_clone3 __ia32_sys_clone3 435 i386 clone3 sys_clone3 __ia32_sys_clone3
436 i386 process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 i386 process_madvise sys_process_madvise

View File

@ -357,7 +357,11 @@
433 common fspick __x64_sys_fspick 433 common fspick __x64_sys_fspick
434 common pidfd_open __x64_sys_pidfd_open 434 common pidfd_open __x64_sys_pidfd_open
435 common clone3 __x64_sys_clone3/ptregs 435 common clone3 __x64_sys_clone3/ptregs
436 common process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise
# #
# x32-specific system call numbers start at 512 to avoid cache impact # x32-specific system call numbers start at 512 to avoid cache impact

View File

@ -406,4 +406,8 @@
433 common fspick sys_fspick 433 common fspick sys_fspick
434 common pidfd_open sys_pidfd_open 434 common pidfd_open sys_pidfd_open
435 common clone3 sys_clone3 435 common clone3 sys_clone3
443 common process_madvise sys_process_madvise # 436 reserved for close_range
# 437 reserved for openat2
# 438 reserved for pidfd_getfd
# 439 reserved for faccessat2
440 common process_madvise sys_process_madvise

View File

@ -60,7 +60,7 @@ do { \
do { \ do { \
static int times; \ static int times; \
if (times < 1) { \ if (times < 1) { \
place_marker(log); \ update_marker(log); \
times++; \ times++; \
} \ } \
} while (0) } while (0)
@ -1586,7 +1586,7 @@ static int virtio_eavb_probe(struct virtio_device *vdev)
priv->debugfs_root, NULL, priv->debugfs_root, NULL,
&fops_debugfs_timeout); &fops_debugfs_timeout);
#endif #endif
place_marker("M - DRIVER EAVB FE Ready"); update_marker("M - DRIVER EAVB FE Ready");
return 0; return 0;
alloc_rxbufs_fail: alloc_rxbufs_fail:
@ -1649,7 +1649,7 @@ static struct virtio_driver virtio_eavb_driver = {
static int __init virtio_eavb_init(void) static int __init virtio_eavb_init(void)
{ {
place_marker("M - DRIVER EAVB FE Init"); update_marker("M - DRIVER EAVB FE Init");
return register_virtio_driver(&virtio_eavb_driver); return register_virtio_driver(&virtio_eavb_driver);
} }

View File

@ -2038,6 +2038,10 @@ long kgsl_ioctl_gpu_aux_command(struct kgsl_device_private *dev_priv,
(KGSL_GPU_AUX_COMMAND_TIMELINE))) (KGSL_GPU_AUX_COMMAND_TIMELINE)))
return -EINVAL; return -EINVAL;
if ((param->flags & KGSL_GPU_AUX_COMMAND_SYNC) &&
(param->numsyncs > KGSL_MAX_SYNCPOINTS))
return -EINVAL;
context = kgsl_context_get_owner(dev_priv, param->context_id); context = kgsl_context_get_owner(dev_priv, param->context_id);
if (!context) if (!context)
return -EINVAL; return -EINVAL;

View File

@ -1,6 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2011-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2011-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
*/ */
#include <linux/bitfield.h> #include <linux/bitfield.h>
@ -2157,14 +2158,18 @@ static uint64_t kgsl_iommu_find_svm_region(struct kgsl_pagetable *pagetable,
static bool iommu_addr_in_svm_ranges(struct kgsl_iommu_pt *pt, static bool iommu_addr_in_svm_ranges(struct kgsl_iommu_pt *pt,
u64 gpuaddr, u64 size) u64 gpuaddr, u64 size)
{ {
u64 end = gpuaddr + size;
/* Make sure size is not zero and we don't wrap around */
if (end <= gpuaddr)
return false;
if ((gpuaddr >= pt->compat_va_start && gpuaddr < pt->compat_va_end) && if ((gpuaddr >= pt->compat_va_start && gpuaddr < pt->compat_va_end) &&
((gpuaddr + size) > pt->compat_va_start && (end > pt->compat_va_start && end <= pt->compat_va_end))
(gpuaddr + size) <= pt->compat_va_end))
return true; return true;
if ((gpuaddr >= pt->svm_start && gpuaddr < pt->svm_end) && if ((gpuaddr >= pt->svm_start && gpuaddr < pt->svm_end) &&
((gpuaddr + size) > pt->svm_start && (end > pt->svm_start && end <= pt->svm_end))
(gpuaddr + size) <= pt->svm_end))
return true; return true;
return false; return false;

View File

@ -683,9 +683,11 @@ static int arm_lpae_map_sg(struct io_pgtable_ops *ops, unsigned long iova,
arm_lpae_iopte *ptep = ms.pgtable + arm_lpae_iopte *ptep = ms.pgtable +
ARM_LPAE_LVL_IDX(iova, MAP_STATE_LVL, ARM_LPAE_LVL_IDX(iova, MAP_STATE_LVL,
data); data);
arm_lpae_init_pte( ret = arm_lpae_init_pte(
data, iova, phys, prot, MAP_STATE_LVL, data, iova, phys, prot, MAP_STATE_LVL,
ptep, ms.prev_pgtable, false); ptep, ms.prev_pgtable, false);
if (ret)
goto out_err;
ms.num_pte++; ms.num_pte++;
} else { } else {
ret = __arm_lpae_map(data, iova, phys, pgsize, ret = __arm_lpae_map(data, iova, phys, pgsize,

View File

@ -378,7 +378,7 @@ struct qseecom_client_handle {
struct qseecom_listener_handle { struct qseecom_listener_handle {
u32 id; u32 id;
bool unregister_pending; bool register_pending;
bool release_called; bool release_called;
}; };
@ -1550,6 +1550,11 @@ static int qseecom_register_listener(struct qseecom_dev_handle *data,
struct qseecom_registered_listener_list *new_entry; struct qseecom_registered_listener_list *new_entry;
struct qseecom_registered_listener_list *ptr_svc; struct qseecom_registered_listener_list *ptr_svc;
if (data->listener.register_pending) {
pr_err("Already a listner registration is in process on this FD\n");
return -EINVAL;
}
ret = copy_from_user(&rcvd_lstnr, argp, sizeof(rcvd_lstnr)); ret = copy_from_user(&rcvd_lstnr, argp, sizeof(rcvd_lstnr));
if (ret) { if (ret) {
pr_err("copy_from_user failed\n"); pr_err("copy_from_user failed\n");
@ -1559,6 +1564,13 @@ static int qseecom_register_listener(struct qseecom_dev_handle *data,
rcvd_lstnr.sb_size)) rcvd_lstnr.sb_size))
return -EFAULT; return -EFAULT;
ptr_svc = __qseecom_find_svc(data->listener.id);
if (ptr_svc) {
pr_err("Already a listener registered on this data: lid=%d\n",
data->listener.id);
return -EINVAL;
}
ptr_svc = __qseecom_find_svc(rcvd_lstnr.listener_id); ptr_svc = __qseecom_find_svc(rcvd_lstnr.listener_id);
if (ptr_svc) { if (ptr_svc) {
if (!ptr_svc->unregister_pending) { if (!ptr_svc->unregister_pending) {
@ -1602,13 +1614,16 @@ static int qseecom_register_listener(struct qseecom_dev_handle *data,
new_entry->svc.listener_id = rcvd_lstnr.listener_id; new_entry->svc.listener_id = rcvd_lstnr.listener_id;
new_entry->sb_length = rcvd_lstnr.sb_size; new_entry->sb_length = rcvd_lstnr.sb_size;
new_entry->user_virt_sb_base = rcvd_lstnr.virt_sb_base; new_entry->user_virt_sb_base = rcvd_lstnr.virt_sb_base;
data->listener.register_pending = true;
if (__qseecom_set_sb_memory(new_entry, data, &rcvd_lstnr)) { if (__qseecom_set_sb_memory(new_entry, data, &rcvd_lstnr)) {
pr_err("qseecom_set_sb_memory failed for listener %d, size %d\n", pr_err("qseecom_set_sb_memory failed for listener %d, size %d\n",
rcvd_lstnr.listener_id, rcvd_lstnr.sb_size); rcvd_lstnr.listener_id, rcvd_lstnr.sb_size);
__qseecom_free_tzbuf(&new_entry->sglistinfo_shm); __qseecom_free_tzbuf(&new_entry->sglistinfo_shm);
kzfree(new_entry); kzfree(new_entry);
data->listener.register_pending = false;
return -ENOMEM; return -ENOMEM;
} }
data->listener.register_pending = false;
init_waitqueue_head(&new_entry->rcv_req_wq); init_waitqueue_head(&new_entry->rcv_req_wq);
init_waitqueue_head(&new_entry->listener_block_app_wq); init_waitqueue_head(&new_entry->listener_block_app_wq);

View File

@ -3880,7 +3880,7 @@ static irqreturn_t msm_dwc3_pwr_irq(int irq, void *data)
if (mdwc->drd_state == DRD_STATE_PERIPHERAL_SUSPEND) { if (mdwc->drd_state == DRD_STATE_PERIPHERAL_SUSPEND) {
dev_info(mdwc->dev, "USB Resume start\n"); dev_info(mdwc->dev, "USB Resume start\n");
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER #ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
place_marker("M - USB device resume started"); update_marker("M - USB device resume started");
#endif #endif
} }
@ -6004,7 +6004,7 @@ static int dwc3_msm_pm_resume(struct device *dev)
mdwc->drd_state == DRD_STATE_PERIPHERAL_SUSPEND) { mdwc->drd_state == DRD_STATE_PERIPHERAL_SUSPEND) {
dev_info(mdwc->dev, "USB Resume start\n"); dev_info(mdwc->dev, "USB Resume start\n");
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER #ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
place_marker("M - USB device resume started"); update_marker("M - USB device resume started");
#endif #endif
} }

View File

@ -893,7 +893,7 @@ static int set_config(struct usb_composite_dev *cdev,
goto done; goto done;
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER #ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
place_marker("M - USB Device is enumerated"); update_marker("M - USB device is enumerated");
#endif #endif
usb_gadget_set_state(gadget, USB_STATE_CONFIGURED); usb_gadget_set_state(gadget, USB_STATE_CONFIGURED);
cdev->config = c; cdev->config = c;
@ -2436,7 +2436,7 @@ void composite_resume(struct usb_gadget *gadget)
*/ */
INFO(cdev, "USB Resume end\n"); INFO(cdev, "USB Resume end\n");
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER #ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
place_marker("M - USB Device is resumed"); update_marker("M - USB device is resumed");
#endif #endif
if (cdev->driver->resume) if (cdev->driver->resume)
cdev->driver->resume(cdev); cdev->driver->resume(cdev);

View File

@ -1639,13 +1639,13 @@ static long f_cdev_ioctl(struct file *fp, unsigned int cmd,
break; break;
case TIOCMGET: case TIOCMGET:
pr_debug("TIOCMGET on port(%s)%pK\n", port->name, port); pr_debug("TIOCMGET on port(%s)%pK\n", port->name, port);
spin_lock_irqsave(&port->port_lock, flags);
ret = f_cdev_tiocmget(port); ret = f_cdev_tiocmget(port);
if (ret >= 0) { if (ret >= 0) {
ret = put_user(ret, (uint32_t *)arg); ret = put_user(ret, (uint32_t *)arg);
spin_lock_irqsave(&port->port_lock, flags);
port->cbits_updated = false; port->cbits_updated = false;
spin_unlock_irqrestore(&port->port_lock, flags);
} }
spin_unlock_irqrestore(&port->port_lock, flags);
break; break;
default: default:
pr_err("Received cmd:%d not supported\n", cmd); pr_err("Received cmd:%d not supported\n", cmd);

View File

@ -850,11 +850,11 @@ __SYSCALL(__NR_pidfd_open, sys_pidfd_open)
#define __NR_clone3 435 #define __NR_clone3 435
__SYSCALL(__NR_clone3, sys_clone3) __SYSCALL(__NR_clone3, sys_clone3)
#endif #endif
#define __NR_process_madvise 436 #define __NR_process_madvise 440
__SYSCALL(__NR_process_madvise, sys_process_madvise) __SYSCALL(__NR_process_madvise, sys_process_madvise)
#undef __NR_syscalls #undef __NR_syscalls
#define __NR_syscalls 437 #define __NR_syscalls 441
/* /*
* 32 bit systems traditionally used different * 32 bit systems traditionally used different

View File

@ -268,7 +268,7 @@ static void qrtr_log_tx_msg(struct qrtr_node *node, struct qrtr_hdr_v1 *hdr,
type, hdr->src_node_id); type, hdr->src_node_id);
if (le32_to_cpu(hdr->dst_node_id) == 0 || if (le32_to_cpu(hdr->dst_node_id) == 0 ||
le32_to_cpu(hdr->dst_node_id) == 3) { le32_to_cpu(hdr->dst_node_id) == 3) {
place_marker("M - Modem QMI Readiness TX"); update_marker("M - Modem QMI Readiness TX");
pr_err("qrtr: Modem QMI Readiness TX cmd:0x%x node[0x%x]\n", pr_err("qrtr: Modem QMI Readiness TX cmd:0x%x node[0x%x]\n",
type, hdr->src_node_id); type, hdr->src_node_id);
} }
@ -340,7 +340,7 @@ static void qrtr_log_rx_msg(struct qrtr_node *node, struct sk_buff *skb)
"RX CTRL: cmd:0x%x node[0x%x]\n", "RX CTRL: cmd:0x%x node[0x%x]\n",
cb->type, cb->src_node); cb->type, cb->src_node);
if (cb->src_node == 0 || cb->src_node == 3) { if (cb->src_node == 0 || cb->src_node == 3) {
place_marker("M - Modem QMI Readiness RX"); update_marker("M - Modem QMI Readiness RX");
pr_err("qrtr: Modem QMI Readiness RX cmd:0x%x node[0x%x]\n", pr_err("qrtr: Modem QMI Readiness RX cmd:0x%x node[0x%x]\n",
cb->type, cb->src_node); cb->type, cb->src_node);
} }