summary refs log tree commit diff
path: root/pkgs/os-specific/linux/mwprocapture/linux_4_14_fix.patch
blob: 94da5a00a2e259ee71b50af014ecb15c1e3a17e8 (plain) (blame)
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
diff -Naur ProCaptureForLinux_3773/src/sources/ospi/linux-file.c ProCaptureForLinux_3773_new/src/sources/ospi/linux-file.c
--- ProCaptureForLinux_3773/src/sources/ospi/linux-file.c	2017-12-15 01:59:57.000000000 -0800
+++ ProCaptureForLinux_3773_new/src/sources/ospi/linux-file.c	2017-12-23 22:47:33.666823299 -0800
@@ -7,8 +7,9 @@
 
 #include "linux-file.h"
 
-#include <asm/uaccess.h>
 #include <linux/sched.h>
+#include <asm/uaccess.h>
+#include <linux/version.h>
 
 struct file *linux_file_open(const char *path, int flags, int mode)
 {
@@ -28,29 +29,36 @@
     filp_close(file, NULL);
 }
 
-ssize_t linux_file_read(struct file *file, loff_t offset, unsigned char *data, size_t size)
+ssize_t linux_file_read(struct file *file, loff_t offset, void *data, size_t size)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)
+    return(kernel_read(file, data, size, &offset));
+#else
     mm_segment_t oldfs;
     ssize_t ret;
 
     oldfs = get_fs();
     set_fs(get_ds());
-    ret = vfs_read(file, data, size, &offset);
+    ret = vfs_read(file, (unsigned char *)data, size, &offset);
     set_fs(oldfs);
 
     return ret;
+#endif
 }
 
-ssize_t linux_file_write(struct file *file, loff_t offset, unsigned char *data, size_t size)
+ssize_t linux_file_write(struct file *file, loff_t offset, const void *data, size_t size)
 {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,14,0)
+    return(kernel_write(file, data, size, &offset));
+#else
     mm_segment_t oldfs;
     ssize_t ret;
 
     oldfs = get_fs();
     set_fs(get_ds());
-    ret = vfs_write(file, data, size, &offset);
+    ret = vfs_write(file, (const unsigned char *)data, size, &offset);
     set_fs(oldfs);
 
     return ret;
+#endif
 }
-
diff -Naur ProCaptureForLinux_3773/src/sources/ospi/linux-file.h ProCaptureForLinux_3773_new/src/sources/ospi/linux-file.h
--- ProCaptureForLinux_3773/src/sources/ospi/linux-file.h	2017-12-15 01:59:57.000000000 -0800
+++ ProCaptureForLinux_3773_new/src/sources/ospi/linux-file.h	2017-12-23 22:46:22.028545189 -0800
@@ -13,9 +13,9 @@
 
 void linux_file_close(struct file *file);
 
-ssize_t linux_file_read(struct file *file, loff_t offset, unsigned char *data, size_t size);
+ssize_t linux_file_read(struct file *file, loff_t offset, void *data, size_t size);
 
-ssize_t linux_file_write(struct file *file, loff_t offset, unsigned char *data, size_t size);
+ssize_t linux_file_write(struct file *file, loff_t offset, const void *data, size_t size);
 
 #endif /* __LINUX_FILE_H__ */