summarylogtreecommitdiffstats
path: root/01-fix-alloc_tty_driver.patch
blob: 25f6729abbc3fa005a05dedaccd6a78ad6ff51c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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
  	}
  }