File 0004-kernel-config-handle-del_timer_sync-kABI-rename.patch of Package mhvtl

From ad0ad22e21a470981a801ddf2a14e5165431f88a Mon Sep 17 00:00:00 2001
From: Lee Duncan <lduncan@suse.com>
Date: Wed, 4 Jun 2025 09:45:39 -0700
Subject: [PATCH 4/4] kernel config: handle del_timer_sync() kABI rename

In newer kernels (starting with 6.10), the del_timer_sync()
kABI has been replaced/renamed to timer_delete_sync().

Signed-off-by: Lee Duncan <lduncan@suse.com>
---
 kernel/config.sh | 11 +++++++++++
 kernel/mhvtl.c   | 15 ++++++++++++++-
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/kernel/config.sh b/kernel/config.sh
index 1bb32d2918e7..2c9da68d6eb6 100755
--- a/kernel/config.sh
+++ b/kernel/config.sh
@@ -167,4 +167,15 @@ else
     echo "#undef DEFINE_QUEUE_LIMITS_SCSI_DEV_CONFIGURE"
 fi >> "${output}"
 
+#
+# check if del_timer_sync() has been renamed to timer_delete()
+#
+if grep -F -q 'int timer_delete_sync(' "${hdrs}/linux/timer.h"; then
+    echo "#ifndef USE_TIMER_DELETE_NOT_DEL_TIMER"
+    echo "#define USE_TIMER_DELETE_NOT_DEL_TIMER"
+    echo "#endif"
+else
+    echo "#undef USE_TIMER_DELETE_NOT_DEL_TIMER"
+fi >> "${output}"
+
 printf '\n\n#endif /* _MHVTL_KERNEL_CONFIG_H */\n' >> "${output}"
diff --git a/kernel/mhvtl.c b/kernel/mhvtl.c
index 983d7db91e23..8bfee8770221 100644
--- a/kernel/mhvtl.c
+++ b/kernel/mhvtl.c
@@ -1002,7 +1002,11 @@ static int mhvtl_stop_queued_cmnd(struct scsi_cmnd *SCpnt)
 	spin_lock_irqsave(&lu->cmd_list_lock, iflags);
 	list_for_each_entry_safe(sqcp, n, &lu->cmd_list, queued_sibling) {
 		if (sqcp->state && (SCpnt == sqcp->a_cmnd)) {
+#ifdef USE_TIMER_DELETE_NOT_DEL_TIMER
+			timer_delete_sync(&sqcp->cmnd_timer);
+#else
 			del_timer_sync(&sqcp->cmnd_timer);
+#endif
 			sqcp->state = CMD_STATE_FREE;
 			sqcp->a_cmnd = NULL;
 			found = 1;
@@ -1031,7 +1035,11 @@ static void mhvtl_stop_all_queued(void)
 		list_for_each_entry_safe(sqcp, n, &lu->cmd_list,
 			queued_sibling) {
 			if (sqcp->state && sqcp->a_cmnd) {
+#ifdef USE_TIMER_DELETE_NOT_DEL_TIMER
+				timer_delete_sync(&sqcp->cmnd_timer);
+#else
 				del_timer_sync(&sqcp->cmnd_timer);
+#endif
 				sqcp->state = CMD_STATE_FREE;
 				sqcp->a_cmnd = NULL;
 				__mhvtl_remove_sqcp(sqcp);
@@ -1599,9 +1607,14 @@ static int mhvtl_put_user_data(unsigned int minor, char __user *arg)
 				s[2],
 				s[12],
 				s[13]);
-	} else
+	} else {
 		sqcp->a_cmnd->result = DID_OK << 16;
+	}
+#ifdef USE_TIMER_DELETE_NOT_DEL_TIMER
+	timer_delete_sync(&sqcp->cmnd_timer);
+#else
 	del_timer_sync(&sqcp->cmnd_timer);
+#endif
 	if (sqcp->done_funct)
 		sqcp->done_funct(sqcp->a_cmnd);
 	else
-- 
2.43.0

openSUSE Build Service is sponsored by