summaryrefslogtreecommitdiff
path: root/app-emulation/virtualbox-guest-additions/files/virtualbox-guest-additions-7.0.14-kernel-6.8.patch
blob: 459dbef713e9891c8ebd39e114ca43488c519f5c (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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
Support for kernel 6.8.x.

https://www.virtualbox.org/changeset/102989/vbox
https://www.virtualbox.org/changeset/102990/vbox
https://www.virtualbox.org/changeset/102992/vbox
https://www.virtualbox.org/changeset/102993/vbox
https://www.virtualbox.org/changeset/102994/vbox

------------------------------------------------------------------------
r102989 | vboxsync | 2024-01-22 19:12:25 +0200 (Lu, 22 ian 2024) | 2 lines

iprt: Add wrapper for strlcpy/strscpy functions, bugref:10584.


--- a/include/iprt/string.h
+++ b/include/iprt/string.h
@@ -245,7 +245,29 @@
 # define RT_BCOPY_UNFORTIFIED(a_pDst, a_pSrc, a_cbToCopy)   memcpy((a_pDst), (a_pSrc), (a_cbToCopy))
 #endif /* !RT_OS_LINUX && !__KERNEL__ */
 
+/** @def RT_STRSCPY
+ * Copy string and NULL-terminate output buffer.
+ *
+ * This macro should mostly be used in Linux kernel code. This is
+ * the replacement for deprecated strlcpy. It was deprecated since 3.16.60
+ * when strscpy was introduced as an alternative. Finally, strlcpy was
+ * completely removed from kernel code in 6.8.0.
+ *
+ * @param   a_pDst          Pointer to the destination string buffer.
+ * @param   a_pSrc          Pointer to the source NULL-terminated string buffer.
+ * @param   a_cbToCopy      Size of destination buffer..
+ */
+#if defined(RT_OS_LINUX) && defined(__KERNEL__)
+# if (RTLNX_VER_MIN(3,16,60))
+#  define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy)    strscpy((a_pDst), (a_pSrc), (a_cbToCopy))
+# else /* < 3.16.60 */
+#  define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy)    strlcpy((a_pDst), (a_pSrc), (a_cbToCopy))
+# endif
+#else  /* !RT_OS_LINUX && !__KERNEL__ */
+# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy)    strscpy((a_pDst), (a_pSrc), (a_cbToCopy))
+#endif /* !RT_OS_LINUX && !__KERNEL__ */
 
+
 #ifdef IN_RING3
 
 /**

------------------------------------------------------------------------
------------------------------------------------------------------------
r102990 | vboxsync | 2024-01-22 19:13:50 +0200 (Lu, 22 ian 2024) | 2 lines

Additions: Linux: Introduce initial support for kernel 6.8, bugref:10584.


--- a/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
+++ b/src/VBox/Additions/common/VBoxGuest/VBoxGuest-linux.c
@@ -1410,7 +1410,7 @@
             RTLogGroupSettings(pLogger, pszValue);
     }
     else if (pParam->name[0] != 'd')
-        strlcpy(&g_szLogGrp[0], pszValue, sizeof(g_szLogGrp));
+        RT_STRSCPY(&g_szLogGrp[0], pszValue, sizeof(g_szLogGrp));
 
     return 0;
 }
@@ -1436,7 +1436,7 @@
             RTLogFlags(pLogger, pszValue);
     }
     else if (pParam->name[0] != 'd')
-        strlcpy(&g_szLogFlags[0], pszValue, sizeof(g_szLogFlags));
+        RT_STRSCPY(&g_szLogFlags[0], pszValue, sizeof(g_szLogFlags));
     return 0;
 }
 
@@ -1461,7 +1461,7 @@
             RTLogDestinations(pLogger, pszValue);
     }
     else if (pParam->name[0] != 'd')
-        strlcpy(&g_szLogDst[0], pszValue, sizeof(g_szLogDst));
+        RT_STRSCPY(&g_szLogDst[0], pszValue, sizeof(g_szLogDst));
     return 0;
 }
 
--- a/src/VBox/Additions/linux/drm/vbox_drv.h
+++ b/src/VBox/Additions/linux/drm/vbox_drv.h
@@ -538,9 +538,7 @@
 int vbox_irq_init(struct vbox_private *vbox);
 void vbox_irq_fini(struct vbox_private *vbox);
 void vbox_report_hotplug(struct vbox_private *vbox);
-#if RTLNX_VER_MAX(5,15,0) && !RTLNX_RHEL_MAJ_PREREQ(9,1) && !RTLNX_SUSE_MAJ_PREREQ(15,5)
 irqreturn_t vbox_irq_handler(int irq, void *arg);
-#endif
 
 /* vbox_hgsmi.c */
 void *hgsmi_buffer_alloc(struct gen_pool *guest_pool, size_t size,
--- a/src/VBox/Additions/linux/sharedfolders/vfsmod.c
+++ b/src/VBox/Additions/linux/sharedfolders/vfsmod.c
@@ -1408,7 +1408,7 @@
     switch (opt) {
     case Opt_iocharset:
     case Opt_nls:
-        strlcpy(info->nls_name, param->string, sizeof(info->nls_name));
+        RT_STRSCPY(info->nls_name, param->string, sizeof(info->nls_name));
         break;
     case Opt_uid:
         info->uid = result.uint_32;
@@ -1469,7 +1469,7 @@
             printk(KERN_WARNING "vboxsf: cache mode (%u) is out of range, using default instead.\n", result.uint_32);
         break;
     case Opt_tag:
-        strlcpy(info->szTag, param->string, sizeof(info->szTag));
+        RT_STRSCPY(info->szTag, param->string, sizeof(info->szTag));
         break;
     default:
         return invalf(fc, "Invalid mount option: '%s'", param->key);
@@ -1528,7 +1528,7 @@
     }
 
     /* fc->source (the shared folder name) is set after vbsf_init_fs_ctx() */
-    strlcpy(info->name, fc->source, sizeof(info->name));
+    RT_STRSCPY(info->name, fc->source, sizeof(info->name));
 
 # if RTLNX_VER_MAX(5,3,0)
     return vfs_get_super(fc, vfs_get_independent_super, vbsf_read_super_aux);
--- a/src/VBox/Additions/linux/sharedfolders/regops.c
+++ b/src/VBox/Additions/linux/sharedfolders/regops.c
@@ -3505,7 +3505,7 @@
 };
 
 /** file_operations::mmap wrapper for logging purposes. */
-extern int vbsf_reg_mmap(struct file *file, struct vm_area_struct *vma)
+static int vbsf_reg_mmap(struct file *file, struct vm_area_struct *vma)
 {
     int rc;
     SFLOGFLOW(("vbsf_reg_mmap: file=%p vma=%p\n", file, vma));
@@ -3786,7 +3786,7 @@
 }
 
 # if RTLNX_VER_MIN(5,19,0) || RTLNX_RHEL_RANGE(9,3, 9,99)
-int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
+static int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
                      unsigned len, struct page **pagep, void **fsdata)
 {
     vbsf_write_begin_warn(pos, len, 0);
@@ -3793,7 +3793,7 @@
     return simple_write_begin(file, mapping, pos, len, pagep, fsdata);
 }
 # else
-int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
+static int vbsf_write_begin(struct file *file, struct address_space *mapping, loff_t pos,
                      unsigned len, unsigned flags, struct page **pagep, void **fsdata)
 {
     vbsf_write_begin_warn(pos, len, flags);

------------------------------------------------------------------------
------------------------------------------------------------------------
r102992 | vboxsync | 2024-01-22 19:33:49 +0200 (Lu, 22 ian 2024) | 5 lines

iprt: Add wrapper for strlcpy/strscpy functions, build fix, bugref:10584.

Ignore return code of strscpy() in RT_STRSCPY macro sinse we have no caller
who is using it. Also rename macro parameter, so it makes more sense.


--- a/include/iprt/string.h
+++ b/include/iprt/string.h
@@ -255,16 +255,16 @@
  *
  * @param   a_pDst          Pointer to the destination string buffer.
  * @param   a_pSrc          Pointer to the source NULL-terminated string buffer.
- * @param   a_cbToCopy      Size of destination buffer..
+ * @param   a_cbDst         Size of destination buffer.
  */
 #if defined(RT_OS_LINUX) && defined(__KERNEL__)
 # if (RTLNX_VER_MIN(3,16,60))
-#  define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy)    strscpy((a_pDst), (a_pSrc), (a_cbToCopy))
+#  define RT_STRSCPY(a_pDst, a_pSrc, a_cbDst)   (void)strscpy((a_pDst), (a_pSrc), (a_cbDst))
 # else /* < 3.16.60 */
-#  define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy)    strlcpy((a_pDst), (a_pSrc), (a_cbToCopy))
+#  define RT_STRSCPY(a_pDst, a_pSrc, a_cbDst)   strlcpy((a_pDst), (a_pSrc), (a_cbDst))
 # endif
 #else  /* !RT_OS_LINUX && !__KERNEL__ */
-# define RT_STRSCPY(a_pDst, a_pSrc, a_cbToCopy)    strscpy((a_pDst), (a_pSrc), (a_cbToCopy))
+# define RT_STRSCPY(a_pDst, a_pSrc, a_cbDst)    (void)strscpy((a_pDst), (a_pSrc), (a_cbDst))
 #endif /* !RT_OS_LINUX && !__KERNEL__ */
 
 

------------------------------------------------------------------------
r102993 | vboxsync | 2024-01-22 19:41:44 +0200 (Lu, 22 ian 2024) | 5 lines

Add wrapper for strlcpy/strscpy functions, build fix, bugref:10584.

It seem, strscpy was added around 4.3.0. Older kernels probably
have it as a backport. So, stick to 4.3.0.


--- a/include/iprt/string.h
+++ b/include/iprt/string.h
@@ -258,7 +258,7 @@
  * @param   a_cbDst         Size of destination buffer.
  */
 #if defined(RT_OS_LINUX) && defined(__KERNEL__)
-# if (RTLNX_VER_MIN(3,16,60))
+# if (RTLNX_VER_MIN(4,3,0))
 #  define RT_STRSCPY(a_pDst, a_pSrc, a_cbDst)   (void)strscpy((a_pDst), (a_pSrc), (a_cbDst))
 # else /* < 3.16.60 */
 #  define RT_STRSCPY(a_pDst, a_pSrc, a_cbDst)   strlcpy((a_pDst), (a_pSrc), (a_cbDst))

------------------------------------------------------------------------
r102994 | vboxsync | 2024-01-22 20:06:29 +0200 (Lu, 22 ian 2024) | 6 lines

iprt: Add wrapper for strlcpy/strscpy functions, build fix, bugref:10584.

Another way around to suppress build error when strscpy return status
is not used. Also, turn macro into strlcpy for non-Linux systems,
so for them it will be no change.


--- a/include/iprt/string.h
+++ b/include/iprt/string.h
@@ -259,12 +259,16 @@
  */
 #if defined(RT_OS_LINUX) && defined(__KERNEL__)
 # if (RTLNX_VER_MIN(4,3,0))
-#  define RT_STRSCPY(a_pDst, a_pSrc, a_cbDst)   (void)strscpy((a_pDst), (a_pSrc), (a_cbDst))
+#  define RT_STRSCPY(a_pDst, a_pSrc, a_cbDst) \
+    { \
+      ssize_t _ret; \
+      _ret = strscpy((a_pDst), (a_pSrc), (a_cbDst)); \
+    }
 # else /* < 3.16.60 */
 #  define RT_STRSCPY(a_pDst, a_pSrc, a_cbDst)   strlcpy((a_pDst), (a_pSrc), (a_cbDst))
 # endif
 #else  /* !RT_OS_LINUX && !__KERNEL__ */
-# define RT_STRSCPY(a_pDst, a_pSrc, a_cbDst)    (void)strscpy((a_pDst), (a_pSrc), (a_cbDst))
+# define RT_STRSCPY(a_pDst, a_pSrc, a_cbDst)    strlcpy((a_pDst), (a_pSrc), (a_cbDst))
 #endif /* !RT_OS_LINUX && !__KERNEL__ */
 
 

------------------------------------------------------------------------