summarylogtreecommitdiffstats
path: root/01-fix-alloc_tty_driver.patch
diff options
context:
space:
mode:
Diffstat (limited to '01-fix-alloc_tty_driver.patch')
-rw-r--r--01-fix-alloc_tty_driver.patch112
1 files changed, 112 insertions, 0 deletions
diff --git a/01-fix-alloc_tty_driver.patch b/01-fix-alloc_tty_driver.patch
new file mode 100644
index 000000000000..25f6729abbc3
--- /dev/null
+++ b/01-fix-alloc_tty_driver.patch
@@ -0,0 +1,112 @@
+*** a/blackmagic-io-12.2a12/bmio_serial.c 2021-11-10 13:53:06.486238131 +0100
+--- b/blackmagic-io-12.2a12/bmio_serial.c 2021-11-10 13:53:12.872862463 +0100
+*************** int bmio_serial_driver_init(void)
+*** 304,310 ****
+ {
+ int ret;
+
+! struct tty_driver* serial = alloc_tty_driver(MAX_SERIAL_LINES);
+ if (!serial)
+ return -ENOMEM;
+
+--- 304,316 ----
+ {
+ int ret;
+
+! struct tty_driver* serial;
+! #if KERNEL_VERSION_OR_LATER(5, 15, 0)
+! serial = tty_alloc_driver(MAX_SERIAL_LINES, 0);
+! #else
+! serial = alloc_tty_driver(MAX_SERIAL_LINES);
+! #endif
+!
+ if (!serial)
+ return -ENOMEM;
+
+*************** int bmio_serial_driver_init(void)
+*** 324,330 ****
+--- 330,340 ----
+ ret = tty_register_driver(serial);
+ if (ret)
+ {
++ #if KERNEL_VERSION_OR_LATER(5, 15, 0)
++ tty_driver_kref_put(serial);
++ #else
+ put_tty_driver(serial);
++ #endif
+ return ret;
+ }
+
+*************** void bmio_serial_driver_exit(void)
+*** 340,346 ****
+--- 350,362 ----
+ if (serial_driver)
+ {
+ tty_unregister_driver(serial_driver);
++
++ #if KERNEL_VERSION_OR_LATER(5, 15, 0)
++ tty_driver_kref_put(serial_driver);
++ #else
+ put_tty_driver(serial_driver);
++ #endif
++
+ serial_driver = NULL;
+ }
+ }
+
+*** a/blackmagic-12.2a12/blackmagic_serial.c 2021-11-10 13:52:55.462977861 +0100
+--- b/blackmagic-12.2a12/blackmagic_serial.c 2021-11-10 13:53:12.872862463 +0100
+*************** int __init blackmagic_serial_init(void)
+*** 613,619 ****
+--- 613,623 ----
+ int ret;
+ struct tty_driver *driver;
+
++ #if KERNEL_VERSION_OR_LATER(5, 15, 0)
++ driver = tty_alloc_driver(BLACKMAGIC_SERIAL_MINORS, 0);
++ #else
+ driver = alloc_tty_driver(BLACKMAGIC_SERIAL_MINORS);
++ #endif
+ if (!driver)
+ return -ENOMEM;
+
+*************** int __init blackmagic_serial_init(void)
+*** 639,645 ****
+
+ abort:
+ printk(KERN_ERR "failed to register blackmagic serial driver");
+! put_tty_driver(driver);
+ return ret;
+ }
+
+--- 643,653 ----
+
+ abort:
+ printk(KERN_ERR "failed to register blackmagic serial driver");
+! #if KERNEL_VERSION_OR_LATER(5, 15, 0)
+! tty_driver_kref_put(driver);
+! #else
+! put_tty_driver(driver);
+! #endif
+ return ret;
+ }
+
+*************** void __exit blackmagic_serial_exit(void)
+*** 648,653 ****
+ if (blackmagic_tty_driver)
+ {
+ tty_unregister_driver(blackmagic_tty_driver);
+! put_tty_driver(blackmagic_tty_driver);
+ }
+ }
+--- 656,665 ----
+ if (blackmagic_tty_driver)
+ {
+ tty_unregister_driver(blackmagic_tty_driver);
+! #if KERNEL_VERSION_OR_LATER(5, 15, 0)
+! tty_driver_kref_put(blackmagic_tty_driver);
+! #else
+! put_tty_driver(blackmagic_tty_driver);
+! #endif
+ }
+ }