From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, Thomas Zimmermann <tzimmermann@suse.de>,
Daniel Vetter <daniel.vetter@ffwll.ch>,
Alex Deucher <alexander.deucher@amd.com>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH 5.15 147/276] drm/vmwgfx: Copy DRM hash-table code into driver
Date: Fri, 17 Oct 2025 16:54:00 +0200 [thread overview]
Message-ID: <20251017145147.847482452@linuxfoundation.org> (raw)
In-Reply-To: <20251017145142.382145055@linuxfoundation.org>
5.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Thomas Zimmermann <tzimmermann@suse.de>
[ Upstream commit 2985c96485b7ef4e015d13dc3081fb0479260951 ]
Besides some legacy code, vmwgfx is the only user of DRM's hash-
table implementation. Copy the code into the driver, so that the
core code can be retired.
No functional changes. However, the real solution for vmwgfx is to
use Linux' generic hash-table functions.
v2:
* add TODO item for updating vmwgfx (Sam)
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211129094841.22499-3-tzimmermann@suse.de
Stable-dep-of: dfe1323ab3c8 ("drm/vmwgfx: Fix Use-after-free in validation")
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
Documentation/gpu/todo.rst | 11 ++
drivers/gpu/drm/vmwgfx/Makefile | 2 +-
drivers/gpu/drm/vmwgfx/ttm_object.c | 52 +++---
drivers/gpu/drm/vmwgfx/ttm_object.h | 3 +-
drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c | 24 +--
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 6 +-
drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_hashtab.c | 199 +++++++++++++++++++++
drivers/gpu/drm/vmwgfx/vmwgfx_hashtab.h | 83 +++++++++
drivers/gpu/drm/vmwgfx/vmwgfx_validation.c | 22 +--
drivers/gpu/drm/vmwgfx/vmwgfx_validation.h | 7 +-
12 files changed, 353 insertions(+), 60 deletions(-)
create mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_hashtab.c
create mode 100644 drivers/gpu/drm/vmwgfx/vmwgfx_hashtab.h
diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst
index 67de1e94fdf76..f31a838d09fbb 100644
--- a/Documentation/gpu/todo.rst
+++ b/Documentation/gpu/todo.rst
@@ -635,6 +635,17 @@ See drivers/gpu/drm/amd/display/TODO for tasks.
Contact: Harry Wentland, Alex Deucher
+vmwgfx: Replace hashtable with Linux' implementation
+----------------------------------------------------
+
+The vmwgfx driver uses its own hashtable implementation. Replace the
+code with Linux' implementation and update the callers. It's mostly a
+refactoring task, but the interfaces are different.
+
+Contact: Zack Rusin, Thomas Zimmermann <tzimmermann@suse.de>
+
+Level: Intermediate
+
Bootsplash
==========
diff --git a/drivers/gpu/drm/vmwgfx/Makefile b/drivers/gpu/drm/vmwgfx/Makefile
index 18edc7ca5b454..59b0b77456dd2 100644
--- a/drivers/gpu/drm/vmwgfx/Makefile
+++ b/drivers/gpu/drm/vmwgfx/Makefile
@@ -1,5 +1,5 @@
# SPDX-License-Identifier: GPL-2.0
-vmwgfx-y := vmwgfx_execbuf.o vmwgfx_gmr.o vmwgfx_kms.o vmwgfx_drv.o \
+vmwgfx-y := vmwgfx_execbuf.o vmwgfx_gmr.o vmwgfx_hashtab.o vmwgfx_kms.o vmwgfx_drv.o \
vmwgfx_ioctl.o vmwgfx_resource.o vmwgfx_ttm_buffer.o \
vmwgfx_cmd.o vmwgfx_irq.o vmwgfx_ldu.o vmwgfx_ttm_glue.o \
vmwgfx_overlay.o vmwgfx_gmrid_manager.o vmwgfx_fence.o \
diff --git a/drivers/gpu/drm/vmwgfx/ttm_object.c b/drivers/gpu/drm/vmwgfx/ttm_object.c
index 04789b2bb2a26..123ab2cbec484 100644
--- a/drivers/gpu/drm/vmwgfx/ttm_object.c
+++ b/drivers/gpu/drm/vmwgfx/ttm_object.c
@@ -70,7 +70,7 @@ struct ttm_object_file {
struct ttm_object_device *tdev;
spinlock_t lock;
struct list_head ref_list;
- struct drm_open_hash ref_hash[TTM_REF_NUM];
+ struct vmwgfx_open_hash ref_hash[TTM_REF_NUM];
struct kref refcount;
};
@@ -88,7 +88,7 @@ struct ttm_object_file {
struct ttm_object_device {
spinlock_t object_lock;
- struct drm_open_hash object_hash;
+ struct vmwgfx_open_hash object_hash;
atomic_t object_count;
struct ttm_mem_global *mem_glob;
struct dma_buf_ops ops;
@@ -120,7 +120,7 @@ struct ttm_object_device {
struct ttm_ref_object {
struct rcu_head rcu_head;
- struct drm_hash_item hash;
+ struct vmwgfx_hash_item hash;
struct list_head head;
struct kref kref;
enum ttm_ref_type ref_type;
@@ -244,12 +244,12 @@ void ttm_base_object_unref(struct ttm_base_object **p_base)
struct ttm_base_object *
ttm_base_object_noref_lookup(struct ttm_object_file *tfile, uint32_t key)
{
- struct drm_hash_item *hash;
- struct drm_open_hash *ht = &tfile->ref_hash[TTM_REF_USAGE];
+ struct vmwgfx_hash_item *hash;
+ struct vmwgfx_open_hash *ht = &tfile->ref_hash[TTM_REF_USAGE];
int ret;
rcu_read_lock();
- ret = drm_ht_find_item_rcu(ht, key, &hash);
+ ret = vmwgfx_ht_find_item_rcu(ht, key, &hash);
if (ret) {
rcu_read_unlock();
return NULL;
@@ -264,12 +264,12 @@ struct ttm_base_object *ttm_base_object_lookup(struct ttm_object_file *tfile,
uint32_t key)
{
struct ttm_base_object *base = NULL;
- struct drm_hash_item *hash;
- struct drm_open_hash *ht = &tfile->ref_hash[TTM_REF_USAGE];
+ struct vmwgfx_hash_item *hash;
+ struct vmwgfx_open_hash *ht = &tfile->ref_hash[TTM_REF_USAGE];
int ret;
rcu_read_lock();
- ret = drm_ht_find_item_rcu(ht, key, &hash);
+ ret = vmwgfx_ht_find_item_rcu(ht, key, &hash);
if (likely(ret == 0)) {
base = drm_hash_entry(hash, struct ttm_ref_object, hash)->obj;
@@ -309,12 +309,12 @@ ttm_base_object_lookup_for_ref(struct ttm_object_device *tdev, uint32_t key)
bool ttm_ref_object_exists(struct ttm_object_file *tfile,
struct ttm_base_object *base)
{
- struct drm_open_hash *ht = &tfile->ref_hash[TTM_REF_USAGE];
- struct drm_hash_item *hash;
+ struct vmwgfx_open_hash *ht = &tfile->ref_hash[TTM_REF_USAGE];
+ struct vmwgfx_hash_item *hash;
struct ttm_ref_object *ref;
rcu_read_lock();
- if (unlikely(drm_ht_find_item_rcu(ht, base->handle, &hash) != 0))
+ if (unlikely(vmwgfx_ht_find_item_rcu(ht, base->handle, &hash) != 0))
goto out_false;
/*
@@ -346,9 +346,9 @@ int ttm_ref_object_add(struct ttm_object_file *tfile,
enum ttm_ref_type ref_type, bool *existed,
bool require_existed)
{
- struct drm_open_hash *ht = &tfile->ref_hash[ref_type];
+ struct vmwgfx_open_hash *ht = &tfile->ref_hash[ref_type];
struct ttm_ref_object *ref;
- struct drm_hash_item *hash;
+ struct vmwgfx_hash_item *hash;
struct ttm_mem_global *mem_glob = tfile->tdev->mem_glob;
struct ttm_operation_ctx ctx = {
.interruptible = false,
@@ -364,7 +364,7 @@ int ttm_ref_object_add(struct ttm_object_file *tfile,
while (ret == -EINVAL) {
rcu_read_lock();
- ret = drm_ht_find_item_rcu(ht, base->handle, &hash);
+ ret = vmwgfx_ht_find_item_rcu(ht, base->handle, &hash);
if (ret == 0) {
ref = drm_hash_entry(hash, struct ttm_ref_object, hash);
@@ -395,7 +395,7 @@ int ttm_ref_object_add(struct ttm_object_file *tfile,
kref_init(&ref->kref);
spin_lock(&tfile->lock);
- ret = drm_ht_insert_item_rcu(ht, &ref->hash);
+ ret = vmwgfx_ht_insert_item_rcu(ht, &ref->hash);
if (likely(ret == 0)) {
list_add_tail(&ref->head, &tfile->ref_list);
@@ -423,11 +423,11 @@ ttm_ref_object_release(struct kref *kref)
container_of(kref, struct ttm_ref_object, kref);
struct ttm_base_object *base = ref->obj;
struct ttm_object_file *tfile = ref->tfile;
- struct drm_open_hash *ht;
+ struct vmwgfx_open_hash *ht;
struct ttm_mem_global *mem_glob = tfile->tdev->mem_glob;
ht = &tfile->ref_hash[ref->ref_type];
- (void)drm_ht_remove_item_rcu(ht, &ref->hash);
+ (void)vmwgfx_ht_remove_item_rcu(ht, &ref->hash);
list_del(&ref->head);
spin_unlock(&tfile->lock);
@@ -443,13 +443,13 @@ ttm_ref_object_release(struct kref *kref)
int ttm_ref_object_base_unref(struct ttm_object_file *tfile,
unsigned long key, enum ttm_ref_type ref_type)
{
- struct drm_open_hash *ht = &tfile->ref_hash[ref_type];
+ struct vmwgfx_open_hash *ht = &tfile->ref_hash[ref_type];
struct ttm_ref_object *ref;
- struct drm_hash_item *hash;
+ struct vmwgfx_hash_item *hash;
int ret;
spin_lock(&tfile->lock);
- ret = drm_ht_find_item(ht, key, &hash);
+ ret = vmwgfx_ht_find_item(ht, key, &hash);
if (unlikely(ret != 0)) {
spin_unlock(&tfile->lock);
return -EINVAL;
@@ -483,7 +483,7 @@ void ttm_object_file_release(struct ttm_object_file **p_tfile)
spin_unlock(&tfile->lock);
for (i = 0; i < TTM_REF_NUM; ++i)
- drm_ht_remove(&tfile->ref_hash[i]);
+ vmwgfx_ht_remove(&tfile->ref_hash[i]);
ttm_object_file_unref(&tfile);
}
@@ -505,7 +505,7 @@ struct ttm_object_file *ttm_object_file_init(struct ttm_object_device *tdev,
INIT_LIST_HEAD(&tfile->ref_list);
for (i = 0; i < TTM_REF_NUM; ++i) {
- ret = drm_ht_create(&tfile->ref_hash[i], hash_order);
+ ret = vmwgfx_ht_create(&tfile->ref_hash[i], hash_order);
if (ret) {
j = i;
goto out_err;
@@ -515,7 +515,7 @@ struct ttm_object_file *ttm_object_file_init(struct ttm_object_device *tdev,
return tfile;
out_err:
for (i = 0; i < j; ++i)
- drm_ht_remove(&tfile->ref_hash[i]);
+ vmwgfx_ht_remove(&tfile->ref_hash[i]);
kfree(tfile);
@@ -536,7 +536,7 @@ ttm_object_device_init(struct ttm_mem_global *mem_glob,
tdev->mem_glob = mem_glob;
spin_lock_init(&tdev->object_lock);
atomic_set(&tdev->object_count, 0);
- ret = drm_ht_create(&tdev->object_hash, hash_order);
+ ret = vmwgfx_ht_create(&tdev->object_hash, hash_order);
if (ret != 0)
goto out_no_object_hash;
@@ -561,7 +561,7 @@ void ttm_object_device_release(struct ttm_object_device **p_tdev)
WARN_ON_ONCE(!idr_is_empty(&tdev->idr));
idr_destroy(&tdev->idr);
- drm_ht_remove(&tdev->object_hash);
+ vmwgfx_ht_remove(&tdev->object_hash);
kfree(tdev);
}
diff --git a/drivers/gpu/drm/vmwgfx/ttm_object.h b/drivers/gpu/drm/vmwgfx/ttm_object.h
index 49b064f0cb19c..6885ccbeec7a1 100644
--- a/drivers/gpu/drm/vmwgfx/ttm_object.h
+++ b/drivers/gpu/drm/vmwgfx/ttm_object.h
@@ -42,9 +42,8 @@
#include <linux/list.h>
#include <linux/rcupdate.h>
-#include <drm/drm_hashtab.h>
-
#include "ttm_memory.h"
+#include "vmwgfx_hashtab.h"
/**
* enum ttm_ref_type
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c b/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c
index 8381750db81b6..494cb98061f22 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c
@@ -42,7 +42,7 @@
*/
struct vmw_cmdbuf_res {
struct vmw_resource *res;
- struct drm_hash_item hash;
+ struct vmwgfx_hash_item hash;
struct list_head head;
enum vmw_cmdbuf_res_state state;
struct vmw_cmdbuf_res_manager *man;
@@ -59,7 +59,7 @@ struct vmw_cmdbuf_res {
* @resources and @list are protected by the cmdbuf mutex for now.
*/
struct vmw_cmdbuf_res_manager {
- struct drm_open_hash resources;
+ struct vmwgfx_open_hash resources;
struct list_head list;
struct vmw_private *dev_priv;
};
@@ -81,11 +81,11 @@ vmw_cmdbuf_res_lookup(struct vmw_cmdbuf_res_manager *man,
enum vmw_cmdbuf_res_type res_type,
u32 user_key)
{
- struct drm_hash_item *hash;
+ struct vmwgfx_hash_item *hash;
int ret;
unsigned long key = user_key | (res_type << 24);
- ret = drm_ht_find_item(&man->resources, key, &hash);
+ ret = vmwgfx_ht_find_item(&man->resources, key, &hash);
if (unlikely(ret != 0))
return ERR_PTR(ret);
@@ -105,7 +105,7 @@ static void vmw_cmdbuf_res_free(struct vmw_cmdbuf_res_manager *man,
struct vmw_cmdbuf_res *entry)
{
list_del(&entry->head);
- WARN_ON(drm_ht_remove_item(&man->resources, &entry->hash));
+ WARN_ON(vmwgfx_ht_remove_item(&man->resources, &entry->hash));
vmw_resource_unreference(&entry->res);
kfree(entry);
}
@@ -167,7 +167,7 @@ void vmw_cmdbuf_res_revert(struct list_head *list)
vmw_cmdbuf_res_free(entry->man, entry);
break;
case VMW_CMDBUF_RES_DEL:
- ret = drm_ht_insert_item(&entry->man->resources, &entry->hash);
+ ret = vmwgfx_ht_insert_item(&entry->man->resources, &entry->hash);
BUG_ON(ret);
list_move_tail(&entry->head, &entry->man->list);
entry->state = VMW_CMDBUF_RES_COMMITTED;
@@ -206,7 +206,7 @@ int vmw_cmdbuf_res_add(struct vmw_cmdbuf_res_manager *man,
return -ENOMEM;
cres->hash.key = user_key | (res_type << 24);
- ret = drm_ht_insert_item(&man->resources, &cres->hash);
+ ret = vmwgfx_ht_insert_item(&man->resources, &cres->hash);
if (unlikely(ret != 0)) {
kfree(cres);
goto out_invalid_key;
@@ -244,10 +244,10 @@ int vmw_cmdbuf_res_remove(struct vmw_cmdbuf_res_manager *man,
struct vmw_resource **res_p)
{
struct vmw_cmdbuf_res *entry;
- struct drm_hash_item *hash;
+ struct vmwgfx_hash_item *hash;
int ret;
- ret = drm_ht_find_item(&man->resources, user_key | (res_type << 24),
+ ret = vmwgfx_ht_find_item(&man->resources, user_key | (res_type << 24),
&hash);
if (likely(ret != 0))
return -EINVAL;
@@ -260,7 +260,7 @@ int vmw_cmdbuf_res_remove(struct vmw_cmdbuf_res_manager *man,
*res_p = NULL;
break;
case VMW_CMDBUF_RES_COMMITTED:
- (void) drm_ht_remove_item(&man->resources, &entry->hash);
+ (void) vmwgfx_ht_remove_item(&man->resources, &entry->hash);
list_del(&entry->head);
entry->state = VMW_CMDBUF_RES_DEL;
list_add_tail(&entry->head, list);
@@ -295,7 +295,7 @@ vmw_cmdbuf_res_man_create(struct vmw_private *dev_priv)
man->dev_priv = dev_priv;
INIT_LIST_HEAD(&man->list);
- ret = drm_ht_create(&man->resources, VMW_CMDBUF_RES_MAN_HT_ORDER);
+ ret = vmwgfx_ht_create(&man->resources, VMW_CMDBUF_RES_MAN_HT_ORDER);
if (ret == 0)
return man;
@@ -320,7 +320,7 @@ void vmw_cmdbuf_res_man_destroy(struct vmw_cmdbuf_res_manager *man)
list_for_each_entry_safe(entry, next, &man->list, head)
vmw_cmdbuf_res_free(man, entry);
- drm_ht_remove(&man->resources);
+ vmwgfx_ht_remove(&man->resources);
kfree(man);
}
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 0f09a9116b054..4fea95a650418 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1149,7 +1149,7 @@ static void vmw_driver_unload(struct drm_device *dev)
unregister_pm_notifier(&dev_priv->pm_nb);
if (dev_priv->ctx.res_ht_initialized)
- drm_ht_remove(&dev_priv->ctx.res_ht);
+ vmwgfx_ht_remove(&dev_priv->ctx.res_ht);
vfree(dev_priv->ctx.cmd_bounce);
if (dev_priv->enable_fb) {
vmw_fb_off(dev_priv);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
index 9c60bb2aefe1f..1099cb5e25006 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
@@ -34,7 +34,6 @@
#include <drm/drm_auth.h>
#include <drm/drm_device.h>
#include <drm/drm_file.h>
-#include <drm/drm_hashtab.h>
#include <drm/drm_rect.h>
#include <drm/ttm/ttm_bo_driver.h>
@@ -43,6 +42,7 @@
#include "ttm_object.h"
#include "vmwgfx_fence.h"
+#include "vmwgfx_hashtab.h"
#include "vmwgfx_reg.h"
#include "vmwgfx_validation.h"
@@ -131,7 +131,7 @@ struct vmw_buffer_object {
*/
struct vmw_validate_buffer {
struct ttm_validate_buffer base;
- struct drm_hash_item hash;
+ struct vmwgfx_hash_item hash;
bool validate_as_mob;
};
@@ -404,7 +404,7 @@ struct vmw_ctx_validation_info;
* @ctx: The validation context
*/
struct vmw_sw_context{
- struct drm_open_hash res_ht;
+ struct vmwgfx_open_hash res_ht;
bool res_ht_initialized;
bool kernel;
struct vmw_fpriv *fp;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
index 21134c7f18382..7dd42c5a7fd62 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
@@ -4112,7 +4112,7 @@ int vmw_execbuf_process(struct drm_file *file_priv,
vmw_binding_state_reset(sw_context->staged_bindings);
if (!sw_context->res_ht_initialized) {
- ret = drm_ht_create(&sw_context->res_ht, VMW_RES_HT_ORDER);
+ ret = vmwgfx_ht_create(&sw_context->res_ht, VMW_RES_HT_ORDER);
if (unlikely(ret != 0))
goto out_unlock;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_hashtab.c b/drivers/gpu/drm/vmwgfx/vmwgfx_hashtab.c
new file mode 100644
index 0000000000000..06aebc12774e7
--- /dev/null
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_hashtab.c
@@ -0,0 +1,199 @@
+/*
+ * Copyright 2006 Tungsten Graphics, Inc., Bismarck, ND. USA.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Simple open hash tab implementation.
+ *
+ * Authors:
+ * Thomas Hellström <thomas-at-tungstengraphics-dot-com>
+ */
+
+#include <linux/export.h>
+#include <linux/hash.h>
+#include <linux/mm.h>
+#include <linux/rculist.h>
+#include <linux/slab.h>
+#include <linux/vmalloc.h>
+
+#include <drm/drm_print.h>
+
+#include "vmwgfx_hashtab.h"
+
+int vmwgfx_ht_create(struct vmwgfx_open_hash *ht, unsigned int order)
+{
+ unsigned int size = 1 << order;
+
+ ht->order = order;
+ ht->table = NULL;
+ if (size <= PAGE_SIZE / sizeof(*ht->table))
+ ht->table = kcalloc(size, sizeof(*ht->table), GFP_KERNEL);
+ else
+ ht->table = vzalloc(array_size(size, sizeof(*ht->table)));
+ if (!ht->table) {
+ DRM_ERROR("Out of memory for hash table\n");
+ return -ENOMEM;
+ }
+ return 0;
+}
+
+void vmwgfx_ht_verbose_list(struct vmwgfx_open_hash *ht, unsigned long key)
+{
+ struct vmwgfx_hash_item *entry;
+ struct hlist_head *h_list;
+ unsigned int hashed_key;
+ int count = 0;
+
+ hashed_key = hash_long(key, ht->order);
+ DRM_DEBUG("Key is 0x%08lx, Hashed key is 0x%08x\n", key, hashed_key);
+ h_list = &ht->table[hashed_key];
+ hlist_for_each_entry(entry, h_list, head)
+ DRM_DEBUG("count %d, key: 0x%08lx\n", count++, entry->key);
+}
+
+static struct hlist_node *vmwgfx_ht_find_key(struct vmwgfx_open_hash *ht, unsigned long key)
+{
+ struct vmwgfx_hash_item *entry;
+ struct hlist_head *h_list;
+ unsigned int hashed_key;
+
+ hashed_key = hash_long(key, ht->order);
+ h_list = &ht->table[hashed_key];
+ hlist_for_each_entry(entry, h_list, head) {
+ if (entry->key == key)
+ return &entry->head;
+ if (entry->key > key)
+ break;
+ }
+ return NULL;
+}
+
+static struct hlist_node *vmwgfx_ht_find_key_rcu(struct vmwgfx_open_hash *ht, unsigned long key)
+{
+ struct vmwgfx_hash_item *entry;
+ struct hlist_head *h_list;
+ unsigned int hashed_key;
+
+ hashed_key = hash_long(key, ht->order);
+ h_list = &ht->table[hashed_key];
+ hlist_for_each_entry_rcu(entry, h_list, head) {
+ if (entry->key == key)
+ return &entry->head;
+ if (entry->key > key)
+ break;
+ }
+ return NULL;
+}
+
+int vmwgfx_ht_insert_item(struct vmwgfx_open_hash *ht, struct vmwgfx_hash_item *item)
+{
+ struct vmwgfx_hash_item *entry;
+ struct hlist_head *h_list;
+ struct hlist_node *parent;
+ unsigned int hashed_key;
+ unsigned long key = item->key;
+
+ hashed_key = hash_long(key, ht->order);
+ h_list = &ht->table[hashed_key];
+ parent = NULL;
+ hlist_for_each_entry(entry, h_list, head) {
+ if (entry->key == key)
+ return -EINVAL;
+ if (entry->key > key)
+ break;
+ parent = &entry->head;
+ }
+ if (parent)
+ hlist_add_behind_rcu(&item->head, parent);
+ else
+ hlist_add_head_rcu(&item->head, h_list);
+ return 0;
+}
+
+/*
+ * Just insert an item and return any "bits" bit key that hasn't been
+ * used before.
+ */
+int vmwgfx_ht_just_insert_please(struct vmwgfx_open_hash *ht, struct vmwgfx_hash_item *item,
+ unsigned long seed, int bits, int shift,
+ unsigned long add)
+{
+ int ret;
+ unsigned long mask = (1UL << bits) - 1;
+ unsigned long first, unshifted_key;
+
+ unshifted_key = hash_long(seed, bits);
+ first = unshifted_key;
+ do {
+ item->key = (unshifted_key << shift) + add;
+ ret = vmwgfx_ht_insert_item(ht, item);
+ if (ret)
+ unshifted_key = (unshifted_key + 1) & mask;
+ } while (ret && (unshifted_key != first));
+
+ if (ret) {
+ DRM_ERROR("Available key bit space exhausted\n");
+ return -EINVAL;
+ }
+ return 0;
+}
+
+int vmwgfx_ht_find_item(struct vmwgfx_open_hash *ht, unsigned long key,
+ struct vmwgfx_hash_item **item)
+{
+ struct hlist_node *list;
+
+ list = vmwgfx_ht_find_key_rcu(ht, key);
+ if (!list)
+ return -EINVAL;
+
+ *item = hlist_entry(list, struct vmwgfx_hash_item, head);
+ return 0;
+}
+
+int vmwgfx_ht_remove_key(struct vmwgfx_open_hash *ht, unsigned long key)
+{
+ struct hlist_node *list;
+
+ list = vmwgfx_ht_find_key(ht, key);
+ if (list) {
+ hlist_del_init_rcu(list);
+ return 0;
+ }
+ return -EINVAL;
+}
+
+int vmwgfx_ht_remove_item(struct vmwgfx_open_hash *ht, struct vmwgfx_hash_item *item)
+{
+ hlist_del_init_rcu(&item->head);
+ return 0;
+}
+
+void vmwgfx_ht_remove(struct vmwgfx_open_hash *ht)
+{
+ if (ht->table) {
+ kvfree(ht->table);
+ ht->table = NULL;
+ }
+}
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_hashtab.h b/drivers/gpu/drm/vmwgfx/vmwgfx_hashtab.h
new file mode 100644
index 0000000000000..a9ce12922e21c
--- /dev/null
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_hashtab.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2006 Tungsten Graphics, Inc., Bismack, ND. USA.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * Simple open hash tab implementation.
+ *
+ * Authors:
+ * Thomas Hellström <thomas-at-tungstengraphics-dot-com>
+ */
+
+/*
+ * TODO: Replace this hashtable with Linux' generic implementation
+ * from <linux/hashtable.h>.
+ */
+
+#ifndef VMWGFX_HASHTAB_H
+#define VMWGFX_HASHTAB_H
+
+#include <linux/list.h>
+
+#define drm_hash_entry(_ptr, _type, _member) container_of(_ptr, _type, _member)
+
+struct vmwgfx_hash_item {
+ struct hlist_node head;
+ unsigned long key;
+};
+
+struct vmwgfx_open_hash {
+ struct hlist_head *table;
+ u8 order;
+};
+
+int vmwgfx_ht_create(struct vmwgfx_open_hash *ht, unsigned int order);
+int vmwgfx_ht_insert_item(struct vmwgfx_open_hash *ht, struct vmwgfx_hash_item *item);
+int vmwgfx_ht_just_insert_please(struct vmwgfx_open_hash *ht, struct vmwgfx_hash_item *item,
+ unsigned long seed, int bits, int shift,
+ unsigned long add);
+int vmwgfx_ht_find_item(struct vmwgfx_open_hash *ht, unsigned long key,
+ struct vmwgfx_hash_item **item);
+
+void vmwgfx_ht_verbose_list(struct vmwgfx_open_hash *ht, unsigned long key);
+int vmwgfx_ht_remove_key(struct vmwgfx_open_hash *ht, unsigned long key);
+int vmwgfx_ht_remove_item(struct vmwgfx_open_hash *ht, struct vmwgfx_hash_item *item);
+void vmwgfx_ht_remove(struct vmwgfx_open_hash *ht);
+
+/*
+ * RCU-safe interface
+ *
+ * The user of this API needs to make sure that two or more instances of the
+ * hash table manipulation functions are never run simultaneously.
+ * The lookup function vmwgfx_ht_find_item_rcu may, however, run simultaneously
+ * with any of the manipulation functions as long as it's called from within
+ * an RCU read-locked section.
+ */
+#define vmwgfx_ht_insert_item_rcu vmwgfx_ht_insert_item
+#define vmwgfx_ht_just_insert_please_rcu vmwgfx_ht_just_insert_please
+#define vmwgfx_ht_remove_key_rcu vmwgfx_ht_remove_key
+#define vmwgfx_ht_remove_item_rcu vmwgfx_ht_remove_item
+#define vmwgfx_ht_find_item_rcu vmwgfx_ht_find_item
+
+#endif
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c
index b09094b50c5d0..41b7417cb5d3d 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.c
@@ -43,7 +43,7 @@
*/
struct vmw_validation_bo_node {
struct ttm_validate_buffer base;
- struct drm_hash_item hash;
+ struct vmwgfx_hash_item hash;
unsigned int coherent_count;
u32 as_mob : 1;
u32 cpu_blit : 1;
@@ -72,7 +72,7 @@ struct vmw_validation_bo_node {
*/
struct vmw_validation_res_node {
struct list_head head;
- struct drm_hash_item hash;
+ struct vmwgfx_hash_item hash;
struct vmw_resource *res;
struct vmw_buffer_object *new_backup;
unsigned long new_backup_offset;
@@ -184,9 +184,9 @@ vmw_validation_find_bo_dup(struct vmw_validation_context *ctx,
return NULL;
if (ctx->ht) {
- struct drm_hash_item *hash;
+ struct vmwgfx_hash_item *hash;
- if (!drm_ht_find_item(ctx->ht, (unsigned long) vbo, &hash))
+ if (!vmwgfx_ht_find_item(ctx->ht, (unsigned long) vbo, &hash))
bo_node = container_of(hash, typeof(*bo_node), hash);
} else {
struct vmw_validation_bo_node *entry;
@@ -221,9 +221,9 @@ vmw_validation_find_res_dup(struct vmw_validation_context *ctx,
return NULL;
if (ctx->ht) {
- struct drm_hash_item *hash;
+ struct vmwgfx_hash_item *hash;
- if (!drm_ht_find_item(ctx->ht, (unsigned long) res, &hash))
+ if (!vmwgfx_ht_find_item(ctx->ht, (unsigned long) res, &hash))
res_node = container_of(hash, typeof(*res_node), hash);
} else {
struct vmw_validation_res_node *entry;
@@ -280,7 +280,7 @@ int vmw_validation_add_bo(struct vmw_validation_context *ctx,
if (ctx->ht) {
bo_node->hash.key = (unsigned long) vbo;
- ret = drm_ht_insert_item(ctx->ht, &bo_node->hash);
+ ret = vmwgfx_ht_insert_item(ctx->ht, &bo_node->hash);
if (ret) {
DRM_ERROR("Failed to initialize a buffer "
"validation entry.\n");
@@ -335,7 +335,7 @@ int vmw_validation_add_resource(struct vmw_validation_context *ctx,
if (ctx->ht) {
node->hash.key = (unsigned long) res;
- ret = drm_ht_insert_item(ctx->ht, &node->hash);
+ ret = vmwgfx_ht_insert_item(ctx->ht, &node->hash);
if (ret) {
DRM_ERROR("Failed to initialize a resource validation "
"entry.\n");
@@ -688,13 +688,13 @@ void vmw_validation_drop_ht(struct vmw_validation_context *ctx)
return;
list_for_each_entry(entry, &ctx->bo_list, base.head)
- (void) drm_ht_remove_item(ctx->ht, &entry->hash);
+ (void) vmwgfx_ht_remove_item(ctx->ht, &entry->hash);
list_for_each_entry(val, &ctx->resource_list, head)
- (void) drm_ht_remove_item(ctx->ht, &val->hash);
+ (void) vmwgfx_ht_remove_item(ctx->ht, &val->hash);
list_for_each_entry(val, &ctx->resource_ctx_list, head)
- (void) drm_ht_remove_item(ctx->ht, &val->hash);
+ (void) vmwgfx_ht_remove_item(ctx->ht, &val->hash);
ctx->ht = NULL;
}
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.h b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.h
index 739906d1b3ebb..495fd504b8c62 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_validation.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_validation.h
@@ -31,9 +31,10 @@
#include <linux/list.h>
#include <linux/ww_mutex.h>
-#include <drm/drm_hashtab.h>
#include <drm/ttm/ttm_execbuf_util.h>
+#include "vmwgfx_hashtab.h"
+
#define VMW_RES_DIRTY_NONE 0
#define VMW_RES_DIRTY_SET BIT(0)
#define VMW_RES_DIRTY_CLEAR BIT(1)
@@ -73,7 +74,7 @@ struct vmw_validation_mem {
* @total_mem: Amount of reserved memory.
*/
struct vmw_validation_context {
- struct drm_open_hash *ht;
+ struct vmwgfx_open_hash *ht;
struct list_head resource_list;
struct list_head resource_ctx_list;
struct list_head bo_list;
@@ -151,7 +152,7 @@ vmw_validation_set_val_mem(struct vmw_validation_context *ctx,
* available at validation context declaration time
*/
static inline void vmw_validation_set_ht(struct vmw_validation_context *ctx,
- struct drm_open_hash *ht)
+ struct vmwgfx_open_hash *ht)
{
ctx->ht = ht;
}
--
2.51.0
next prev parent reply other threads:[~2025-10-17 15:53 UTC|newest]
Thread overview: 288+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-17 14:51 [PATCH 5.15 000/276] 5.15.195-rc1 review Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 001/276] iommu/amd: Add map/unmap_pages() iommu_domain_ops callback support Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 002/276] scsi: target: target_core_configfs: Add length check to avoid buffer overflow Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 003/276] media: b2c2: Fix use-after-free causing by irq_check_work in flexcop_pci_remove Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 004/276] media: rc: fix races with imon_disconnect() Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 005/276] KVM: arm64: Fix softirq masking in FPSIMD register saving sequence Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 006/276] udp: Fix memory accounting leak Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 007/276] media: tunner: xc5000: Refactor firmware load Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 008/276] media: tuner: xc5000: Fix use-after-free in xc5000_release Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 009/276] media: i2c: tc358743: Fix use-after-free bugs caused by orphan timer in probe Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 010/276] USB: serial: option: add SIMCom 8230C compositions Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 011/276] wifi: rtlwifi: rtl8192cu: Dont claim USB ID 07b8:8188 Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 012/276] dm-integrity: limit MAX_TAG_SIZE to 255 Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 013/276] perf subcmd: avoid crash in exclude_cmds when excludes is empty Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 014/276] hid: fix I2C read buffer overflow in raw_event() for mcp2221 Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 015/276] serial: stm32: allow selecting console when the driver is module Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 016/276] staging: axis-fifo: fix maximum TX packet length check Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 017/276] staging: axis-fifo: flush RX FIFO on read errors Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 018/276] driver core/PM: Set power.no_callbacks along with power.no_pm Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 019/276] platform/x86: int3472: Check for adev == NULL Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 020/276] crypto: rng - Ensure set_ent is always present Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 021/276] minmax: add in_range() macro Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 022/276] net/9p: fix double req put in p9_fd_cancelled Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 023/276] filelock: add FL_RECLAIM to show_fl_flags() macro Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 024/276] selftests: arm64: Check fread return value in exec_target Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 025/276] coresight: trbe: Prevent overflow in PERF_IDX2OFF() Greg Kroah-Hartman
2025-10-17 14:51 ` [PATCH 5.15 026/276] perf: arm_spe: " Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 027/276] x86/vdso: Fix output operand size of RDPID Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 028/276] regmap: Remove superfluous check for !config in __regmap_init() Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 029/276] libbpf: Fix reuse of DEVMAP Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 030/276] cpufreq: scmi: Account for malformed DT in scmi_dev_used_by_cpus() Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 031/276] ACPI: processor: idle: Fix memory leak when register cpuidle device failed Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 032/276] soc: qcom: rpmh-rsc: Unconditionally clear _TRIGGER bit for TCS Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 033/276] pinctrl: meson-gxl: add missing i2c_d pinmux Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 034/276] blk-mq: check kobject state_in_sysfs before deleting in blk_mq_unregister_hctx Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 035/276] ARM: at91: pm: fix MCKx restore routine Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 036/276] regulator: scmi: Use int type to store negative error codes Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 037/276] block: use int to store blk_stack_limits() return value Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 038/276] PM: sleep: core: Clear power.must_resume in noirq suspend error path Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 039/276] pinctrl: renesas: Use int type to store negative error codes Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 040/276] firmware: firmware: meson-sm: fix compile-test default Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 041/276] arm64: dts: mediatek: mt8516-pumpkin: Fix machine compatible Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 042/276] pwm: tiehrpwm: Fix corner case in clock divisor calculation Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 043/276] nvmet-fc: move lsop put work to nvmet_fc_ls_req_op Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 044/276] i3c: master: svc: Recycle unused IBI slot Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 045/276] selftests: watchdog: skip ping loop if WDIOF_KEEPALIVEPING not supported Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 046/276] bpf: Explicitly check accesses to bpf_sock_addr Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 047/276] smp: Fix up and expand the smp_call_function_many() kerneldoc Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 048/276] tools/nolibc: make time_t robust if __kernel_old_time_t is missing in host headers Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 049/276] thermal/drivers/qcom: Make LMH select QCOM_SCM Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 050/276] thermal/drivers/qcom/lmh: Add missing IRQ includes Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 051/276] i2c: mediatek: fix potential incorrect use of I2C_MASTER_WRRD Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 052/276] i2c: designware: Add disabling clocks when probe fails Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 053/276] drm/radeon/r600_cs: clean up of dead code in r600_cs Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 054/276] usb: host: max3421-hcd: Fix error pointer dereference in probe cleanup Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 055/276] scsi: pm80xx: Fix array-index-out-of-of-bounds on rmmod Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 056/276] scsi: myrs: Fix dma_alloc_coherent() error check Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 057/276] media: rj54n1cb0c: Fix memleak in rj54n1_probe() Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 058/276] ALSA: lx_core: use int type to store negative error codes Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 059/276] drm/amdgpu: Power up UVD 3 for FW validation (v2) Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 060/276] wifi: mwifiex: send world regulatory domain to driver Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 061/276] PCI: tegra: Fix devm_kcalloc() argument order for port->phys allocation Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 062/276] tcp: fix __tcp_close() to only send RST when required Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 063/276] drm/amdkfd: Fix error code sign for EINVAL in svm_ioctl() Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 064/276] usb: phy: twl6030: Fix incorrect type for ret Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 065/276] usb: gadget: configfs: Correctly set use_os_string at bind Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 066/276] misc: genwqe: Fix incorrect cmd field being reported in error Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 067/276] pps: fix warning in pps_register_cdev when register device fail Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 068/276] ASoC: Intel: bytcht_es8316: Fix invalid quirk input mapping Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 069/276] ASoC: Intel: bytcr_rt5640: " Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 070/276] ASoC: Intel: bytcr_rt5651: " Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 071/276] fs: ntfs3: Fix integer overflow in run_unpack() Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 072/276] iio: consumers: Fix offset handling in iio_convert_raw_to_processed() Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 073/276] netfilter: ipset: Remove unused htable_bits in macro ahash_region Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 074/276] watchdog: mpc8xxx_wdt: Reload the watchdog timer when enabling the watchdog Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 075/276] drivers/base/node: handle error properly in register_one_node() Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 076/276] RDMA/cm: Rate limit destroy CM ID timeout error message Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 077/276] wifi: mt76: fix potential memory leak in mt76_wmac_probe() Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 078/276] ACPI: NFIT: Fix incorrect ndr_desc being reportedin dev_err message Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 079/276] scsi: qla2xxx: edif: Fix incorrect sign of error code Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 080/276] scsi: qla2xxx: Fix incorrect sign of error code in START_SP_W_RETRIES() Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 081/276] Revert "usb: xhci: Avoid Stop Endpoint retry loop if the endpoint seems Running" Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 082/276] RDMA/core: Resolve MAC of next-hop device without ARP support Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 083/276] IB/sa: Fix sa_local_svc_timeout_ms read race Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 084/276] Documentation: trace: historgram-design: Separate sched_waking histogram section heading and the following diagram Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 085/276] wifi: ath10k: avoid unnecessary wait for service ready message Greg Kroah-Hartman
2025-10-17 14:52 ` [PATCH 5.15 086/276] sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 087/276] sparc: fix accurate exception reporting in copy_{from_to}_user for UltraSPARC III Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 088/276] sparc: fix accurate exception reporting in copy_{from_to}_user for Niagara Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 089/276] sparc: fix accurate exception reporting in copy_to_user for Niagara 4 Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 090/276] sparc: fix accurate exception reporting in copy_{from,to}_user for M7 Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 091/276] remoteproc: qcom: q6v5: Avoid disabling handover IRQ twice Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 092/276] coresight: trbe: Return NULL pointer for allocation failures Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 093/276] NFSv4.1: fix backchannel max_resp_sz verification check Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 094/276] ipvs: Defer ip_vs_ftp unregister during netns cleanup Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 095/276] scsi: mpt3sas: Fix crash in transport port remove by using ioc_info() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 096/276] usb: vhci-hcd: Prevent suspending virtually attached devices Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 097/276] RDMA/siw: Always report immediate post SQ errors Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 098/276] net: usb: Remove disruptive netif_wake_queue in rtl8150_set_multicast Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 099/276] Bluetooth: MGMT: Fix not exposing debug UUID on MGMT_OP_READ_EXP_FEATURES_INFO Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 100/276] hwrng: ks-sa - fix division by zero in ks_sa_rng_init Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 101/276] ocfs2: fix double free in user_cluster_connect() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 102/276] drivers/base/node: fix double free in register_one_node() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 103/276] nfp: fix RSS hash key size when RSS is not supported Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 104/276] net: ena: return 0 in ena_get_rxfh_key_size() when RSS hash key is not configurable Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 105/276] net: dlink: handle copy_thresh allocation failure Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 106/276] Revert "net/mlx5e: Update and set Xon/Xoff upon MTU set" Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 107/276] Squashfs: fix uninit-value in squashfs_get_parent Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 108/276] uio_hv_generic: Let userspace take care of interrupt mask Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 109/276] fs: udf: fix OOB read in lengthAllocDescs handling Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 110/276] net: nfc: nci: Add parameter validation for packet data Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 111/276] mfd: vexpress-sysreg: Check the return value of devm_gpiochip_add_data() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 112/276] ext4: fix checks for orphan inodes Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 113/276] mm: hugetlb: avoid soft lockup when mprotect to large memory area Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 114/276] nvdimm: ndtest: Return -ENOMEM if devm_kcalloc() fails in ndtest_probe() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 115/276] Input: atmel_mxt_ts - allow reset GPIO to sleep Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 116/276] Input: uinput - zero-initialize uinput_ff_upload_compat to avoid info leak Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 117/276] pinctrl: check the return value of pinmux_ops::get_function_name() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 118/276] bus: fsl-mc: Check return value of platform_get_resource() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 119/276] usb: cdns3: cdnsp-pci: remove redundant pci_disable_device() call Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 120/276] fs: always return zero on success from replace_fd() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 121/276] clocksource/drivers/clps711x: Fix resource leaks in error paths Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 122/276] iio: frequency: adf4350: Fix ADF4350_REG3_12BIT_CLKDIV_MODE Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 123/276] perf evsel: Avoid container_of on a NULL leader Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 124/276] libperf event: Ensure tracing data is multiple of 8 sized Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 125/276] clk: at91: peripheral: fix return value Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 126/276] perf util: Fix compression checks returning -1 as bool Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 127/276] rtc: x1205: Fix Xicor X1205 vendor prefix Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 128/276] perf arm-spe: Save context ID in record Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 129/276] perf arm-spe: Use SPE data source for neoverse cores Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 130/276] perf arm_spe: Correct setting remote access Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 131/276] perf arm-spe: augment the data source type with neoverse_spe list Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 132/276] perf arm-spe: Refactor arm-spe to support operation packet type Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 133/276] perf arm-spe: Rename the common data source encoding Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 134/276] perf arm_spe: Correct memory level for remote access Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 135/276] perf session: Fix handling when buffer exceeds 2 GiB Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 136/276] perf test: Dont leak workload gopipe in PERF_RECORD_* Greg Kroah-Hartman
2025-10-22 12:08 ` Niko Mauno
2025-10-22 12:29 ` Greg Kroah-Hartman
2025-10-23 8:16 ` Niko Mauno
2025-10-17 14:53 ` [PATCH 5.15 137/276] clk: nxp: lpc18xx-cgu: convert from round_rate() to determine_rate() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 138/276] clk: nxp: Fix pll0 rate check condition in LPC18xx CGU driver Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 139/276] cpufreq: tegra186: Set target frequency for all cpus in policy Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 140/276] scsi: libsas: Add sas_task_find_rq() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 141/276] scsi: mvsas: Delete mvs_tag_init() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 142/276] scsi: mvsas: Use sas_task_find_rq() for tagging Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 143/276] scsi: mvsas: Fix use-after-free bugs in mvs_work_queue Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 144/276] net/mlx4: prevent potential use after free in mlx4_en_do_uc_filter() Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 145/276] s390/cio: unregister the subchannel while purging Greg Kroah-Hartman
2025-10-17 14:53 ` [PATCH 5.15 146/276] s390/cio: Update purge function to unregister the unused subchannels Greg Kroah-Hartman
2025-10-17 14:54 ` Greg Kroah-Hartman [this message]
2025-10-17 14:54 ` [PATCH 5.15 148/276] drm/vmwgfx: Fix Use-after-free in validation Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 149/276] net/sctp: fix a null dereference in sctp_disposition sctp_sf_do_5_1D_ce() Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 150/276] tcp: Dont call reqsk_fastopen_remove() in tcp_conn_request() Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 151/276] net: fsl_pq_mdio: Fix device node reference leak in fsl_pq_mdio_probe Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 152/276] tools build: Align warning options with perf Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 153/276] mailbox: zynqmp-ipi: Remove redundant mbox_controller_unregister() call Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 154/276] mailbox: zynqmp-ipi: Remove dev.parent check in zynqmp_ipi_free_mboxes Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 155/276] bpf: Fix metadata_dst leak __bpf_redirect_neigh_v{4,6} Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 156/276] drm/amdgpu: Add additional DCE6 SCL registers Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 157/276] drm/amd/display: Add missing DCE6 SCL_HORZ_FILTER_INIT* SRIs Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 158/276] drm/amd/display: Properly clear SCL_*_FILTER_CONTROL on DCE6 Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 159/276] drm/amd/display: Properly disable scaling " Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 160/276] bridge: br_vlan_fill_forward_path_pvid: use br_vlan_group_rcu() Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 161/276] crypto: essiv - Check ssize for decryption and in-place encryption Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 162/276] tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 163/276] gpio: wcd934x: Remove duplicate assignment of of_gpio_n_cells Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 164/276] gpio: wcd934x: mark the GPIO controller as sleeping Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 165/276] bpf: Avoid RCU context warning when unpinning htab with internal structs Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 166/276] ACPI: TAD: Add missing sysfs_remove_group() for ACPI_TAD_RT Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 167/276] ACPI: debug: fix signedness issues in read/write helpers Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 168/276] arm64: dts: qcom: msm8916: Add missing MDSS reset Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 169/276] ARM: OMAP2+: pm33xx-core: ix device node reference leaks in amx3_idle_init Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 170/276] xen/events: Cleanup find_virq() return codes Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 171/276] xen/manage: Fix suspend error path Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 172/276] firmware: meson_sm: fix device leak at probe Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 173/276] media: i2c: mt9v111: fix incorrect type for ret Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 174/276] drm/nouveau: fix bad ret code in nouveau_bo_move_prep Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 175/276] btrfs: avoid potential out-of-bounds in btrfs_encode_fh() Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 176/276] bus: mhi: host: Do not use uninitialized dev pointer in mhi_init_irq_setup() Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 177/276] copy_sighand: Handle architectures where sizeof(unsigned long) < sizeof(u64) Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 178/276] cpufreq: intel_pstate: Fix object lifecycle issue in update_qos_request() Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 179/276] crypto: atmel - Fix dma_unmap_sg() direction Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 180/276] fs/ntfs3: Fix a resource leak bug in wnd_extend() Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 181/276] iio: dac: ad5360: use int type to store negative error codes Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 182/276] iio: dac: ad5421: " Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 183/276] iio: frequency: adf4350: Fix prescaler usage Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 184/276] init: handle bootloader identifier in kernel parameters Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 185/276] iio: imu: inv_icm42600: Drop redundant pm_runtime reinitialization in resume Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 186/276] iommu/vt-d: PRS isnt usable if PDS isnt supported Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 187/276] KEYS: trusted_tpm1: Compare HMAC values in constant time Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 188/276] lib/genalloc: fix device leak in of_gen_pool_get() Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 189/276] openat2: dont trigger automounts with RESOLVE_NO_XDEV Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 190/276] parisc: dont reference obsolete termio struct for TC* constants Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 191/276] nvme-pci: Add TUXEDO IBS Gen8 to Samsung sleep quirk Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 192/276] powerpc/powernv/pci: Fix underflow and leak issue Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 193/276] powerpc/pseries/msi: Fix potential " Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 194/276] pwm: berlin: Fix wrong register in suspend/resume Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 195/276] scsi: hpsa: Fix potential memory leak in hpsa_big_passthru_ioctl() Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 196/276] sctp: Fix MAC comparison to be constant-time Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 197/276] sparc64: fix hugetlb for sun4u Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 198/276] sparc: fix error handling in scan_one_device() Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 199/276] mtd: rawnand: fsmc: Default to autodetect buswidth Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 200/276] mmc: core: SPI mode remove cmd7 Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 201/276] memory: samsung: exynos-srom: Fix of_iomap leak in exynos_srom_probe Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 202/276] rtc: interface: Ensure alarm irq is enabled when UIE is enabled Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 203/276] rtc: interface: Fix long-standing race when setting alarm Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 204/276] rseq/selftests: Use weak symbol reference, not definition, to link with glibc Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 205/276] PCI/sysfs: Ensure devices are powered for config reads Greg Kroah-Hartman
2025-10-17 14:54 ` [PATCH 5.15 206/276] PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 207/276] PCI/ERR: Fix uevent on failure to recover Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 208/276] PCI/AER: Fix missing uevent on recovery when a reset is requested Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 209/276] PCI/AER: Support errors introduced by PCIe r6.0 Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 210/276] PCI: keystone: Use devm_request_irq() to free "ks-pcie-error-irq" on exit Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 211/276] PCI: tegra194: Fix broken tegra_pcie_ep_raise_msi_irq() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 212/276] spi: cadence-quadspi: Flush posted register writes before INDAC access Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 213/276] spi: cadence-quadspi: Flush posted register writes before DAC access Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 214/276] x86/umip: Check that the instruction opcode is at least two bytes Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 215/276] x86/umip: Fix decoding of register forms of 0F 01 (SGDT and SIDT aliases) Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 216/276] mm/page_alloc: only set ALLOC_HIGHATOMIC for __GPF_HIGH allocations Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 217/276] NFSD: Fix destination buffer size in nfsd4_ssc_setup_dul() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 218/276] nfsd: nfserr_jukebox in nlm_fopen should lead to a retry Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 219/276] ext4: verify orphan file size is not too big Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 220/276] ext4: increase i_disksize to offset + len in ext4_update_disksize_before_punch() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 221/276] ext4: correctly handle queries for metadata mappings Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 222/276] ext4: guard against EA inode refcount underflow in xattr update Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 223/276] ext4: free orphan info with kvfree Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 224/276] lib/crypto/curve25519-hacl64: Disable KASAN with clang-17 and older Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 225/276] KVM: x86: Dont (re)check L1 intercepts when completing userspace I/O Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 226/276] ASoC: codecs: wcd934x: Simplify with dev_err_probe Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 227/276] ASoC: wcd934x: fix error handling in wcd934x_codec_parse_data() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 228/276] Squashfs: add additional inode sanity checking Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 229/276] Squashfs: reject negative file sizes in squashfs_read_inode() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 230/276] media: mc: Clear minor number before put device Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 231/276] mfd: intel_soc_pmic_chtdc_ti: Fix invalid regmap-config max_register value Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 232/276] mfd: intel_soc_pmic_chtdc_ti: Drop unneeded assignment for cache_type Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 233/276] mfd: intel_soc_pmic_chtdc_ti: Set use_single_read regmap_config flag Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 234/276] net: usb: asix: hold PM usage ref to avoid PM/MDIO + RTNL deadlock Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 235/276] ksmbd: fix error code overwriting in smb2_get_info_filesystem() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 236/276] tracing: Fix race condition in kprobe initialization causing NULL pointer dereference Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 237/276] dm: fix NULL pointer dereference in __dm_suspend() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 238/276] locking: Introduce __cleanup() based infrastructure Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 239/276] fscontext: do not consume log entries when returning -EMSGSIZE Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 240/276] btrfs: fix the incorrect max_bytes value for find_lock_delalloc_range() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 241/276] arm64: dts: qcom: sdm845: Fix slimbam num-channels/ees Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 242/276] minmax: Introduce {min,max}_array() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 243/276] minmax: deduplicate __unconst_integer_typeof() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 244/276] minmax: fix indentation of __cmp_once() and __clamp_once() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 245/276] minmax: avoid overly complicated constant expressions in VM code Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 246/276] minmax: add a few more MIN_T/MAX_T users Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 247/276] minmax: simplify and clarify min_t()/max_t() implementation Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 248/276] minmax: make generic MIN() and MAX() macros available everywhere Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 249/276] minmax: dont use max() in situations that want a C constant expression Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 250/276] minmax: simplify min()/max()/clamp() implementation Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 251/276] minmax: improve macro expansion and type checking Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 252/276] minmax: fix up min3() and max3() too Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 253/276] minmax.h: add whitespace around operators and after commas Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 254/276] minmax.h: update some comments Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 255/276] minmax.h: reduce the #define expansion of min(), max() and clamp() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 256/276] minmax.h: use BUILD_BUG_ON_MSG() for the lo < hi test in clamp() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 257/276] minmax.h: move all the clamp() definitions after the min/max() ones Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 258/276] minmax.h: simplify the variants of clamp() Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 259/276] minmax.h: remove some #defines that are only expanded once Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 260/276] minixfs: Verify inode mode when loading from disk Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 261/276] pid: Add a judgment for ns null in pid_nr_ns Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 262/276] pid: make __task_pid_nr_ns(ns => NULL) safe for zombie callers Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 263/276] fs: Add initramfs_options to set initramfs mount options Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 264/276] cramfs: Verify inode mode when loading from disk Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 265/276] writeback: Avoid softlockup when switching many inodes Greg Kroah-Hartman
2025-10-17 14:55 ` [PATCH 5.15 266/276] writeback: Avoid excessively long inode switching times Greg Kroah-Hartman
2025-10-17 14:56 ` [PATCH 5.15 267/276] media: switch from pci_ to dma_ API Greg Kroah-Hartman
2025-10-17 14:56 ` [PATCH 5.15 268/276] media: cx18: Add missing check after DMA map Greg Kroah-Hartman
2025-10-17 14:56 ` [PATCH 5.15 269/276] arm64: mte: Do not flag the zero page as PG_mte_tagged Greg Kroah-Hartman
2025-10-17 14:56 ` [PATCH 5.15 270/276] media: pci/ivtv: switch from pci_ to dma_ API Greg Kroah-Hartman
2025-10-17 14:56 ` [PATCH 5.15 271/276] media: pci: ivtv: Add missing check after DMA map Greg Kroah-Hartman
2025-10-17 14:56 ` [PATCH 5.15 272/276] xen/events: Update virq_to_irq on migration Greg Kroah-Hartman
2025-10-17 14:56 ` [PATCH 5.15 273/276] media: pci: ivtv: Add check for DMA map result Greg Kroah-Hartman
2025-10-17 14:56 ` [PATCH 5.15 274/276] mm/slab: make __free(kfree) accept error pointers Greg Kroah-Hartman
2025-10-17 14:56 ` [PATCH 5.15 275/276] mptcp: pm: in-kernel: usable client side with C-flag Greg Kroah-Hartman
2025-10-17 14:56 ` [PATCH 5.15 276/276] selftests: mptcp: join: validate C-flag + def limit Greg Kroah-Hartman
2025-10-17 18:16 ` [PATCH 5.15 000/276] 5.15.195-rc1 review Jon Hunter
2025-10-17 22:57 ` Florian Fainelli
2025-10-17 23:04 ` Florian Fainelli
2025-10-19 12:09 ` Greg Kroah-Hartman
2025-10-18 0:45 ` Shuah Khan
2025-10-18 8:38 ` Brett A C Sheffield
2025-10-18 9:08 ` Naresh Kamboju
2025-10-19 11:58 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251017145147.847482452@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=alexander.deucher@amd.com \
--cc=daniel.vetter@ffwll.ch \
--cc=patches@lists.linux.dev \
--cc=sashal@kernel.org \
--cc=stable@vger.kernel.org \
--cc=tzimmermann@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).