hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/arch/parisc/kernel/sys_parisc.c
....@@ -444,3 +444,30 @@
444444 flags = FIX_O_NONBLOCK(flags);
445445 return sys_inotify_init1(flags);
446446 }
447
+
448
+/*
449
+ * madvise() wrapper
450
+ *
451
+ * Up to kernel v6.1 parisc has different values than all other
452
+ * platforms for the MADV_xxx flags listed below.
453
+ * To keep binary compatibility with existing userspace programs
454
+ * translate the former values to the new values.
455
+ *
456
+ * XXX: Remove this wrapper in year 2025 (or later)
457
+ */
458
+
459
+asmlinkage notrace long parisc_madvise(unsigned long start, size_t len_in, int behavior)
460
+{
461
+ switch (behavior) {
462
+ case 65: behavior = MADV_MERGEABLE; break;
463
+ case 66: behavior = MADV_UNMERGEABLE; break;
464
+ case 67: behavior = MADV_HUGEPAGE; break;
465
+ case 68: behavior = MADV_NOHUGEPAGE; break;
466
+ case 69: behavior = MADV_DONTDUMP; break;
467
+ case 70: behavior = MADV_DODUMP; break;
468
+ case 71: behavior = MADV_WIPEONFORK; break;
469
+ case 72: behavior = MADV_KEEPONFORK; break;
470
+ }
471
+
472
+ return sys_madvise(start, len_in, behavior);
473
+}