1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- diff --git a/driver/ntoskernel.c b/driver/ntoskernel.c
- index fccb28e..cd87740 100644
- --- a/driver/ntoskernel.c
- +++ b/driver/ntoskernel.c
- @@ -1763,9 +1763,9 @@ wstdcall void __iomem *WIN_FUNC(MmMapIoSpace,3)
- void __iomem *virt;
- ENTER1("cache type: %d", cache);
- if (cache == MmCached)
- - virt = ioremap(phys_addr, size);
- + virt = ioremap_cache(phys_addr, size);
- else
- - virt = ioremap_nocache(phys_addr, size);
- + virt = ioremap(phys_addr, size);
- TRACE1("%llx, %zu, %p", phys_addr, size, virt);
- return virt;
- }
- diff --git a/driver/proc.c b/driver/proc.c
- index 8a8cf2b..2622228 100644
- --- a/driver/proc.c
- +++ b/driver/proc.c
- @@ -70,7 +70,11 @@ static inline void *PDE_DATA(const struct inode *inode)
- #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26)
- static inline struct proc_dir_entry *proc_create_data(const char *name,
- umode_t mode, struct proc_dir_entry *parent,
- +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
- + struct proc_ops *fops, void *data)
- +#else
- struct file_operations *fops, void *data)
- +#endif
- {
- struct proc_dir_entry *de;
-
- @@ -86,7 +90,11 @@ static inline struct proc_dir_entry *proc_create_data(const char *name,
-
- static int do_proc_make_entry(const char *name, umode_t mode,
- struct proc_dir_entry *parent,
- +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
- + struct proc_ops *fops, kuid_t uid,
- +#else
- struct file_operations *fops, kuid_t uid,
- +#endif
- kgid_t gid, struct ndis_device *wnd)
- {
- struct proc_dir_entry *de;
- @@ -100,6 +108,32 @@ static int do_proc_make_entry(const char *name, umode_t mode,
- return 0;
- }
-
- +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 6, 0)
- +#define PROC_DECLARE_RO(name) \
- + static int proc_##name##_open(struct inode *inode, struct file *file) \
- + { \
- + return single_open(file, proc_##name##_read, PDE_DATA(inode)); \
- + } \
- + static struct proc_ops name##_fops = { \
- + .proc_open = proc_##name##_open, \
- + .proc_read = seq_read, \
- + .proc_lseek = seq_lseek, \
- + .proc_release = single_release, \
- + };
- +
- +#define PROC_DECLARE_RW(name) \
- + static int proc_##name##_open(struct inode *inode, struct file *file) \
- + { \
- + return single_open(file, proc_##name##_read, PDE_DATA(inode)); \
- + } \
- + static struct proc_ops name##_fops = { \
- + .proc_open = proc_##name##_open, \
- + .proc_read = seq_read, \
- + .proc_lseek = seq_lseek, \
- + .proc_release = single_release, \
- + .proc_write = proc_##name##_write, \
- + };
- +#else
- #define PROC_DECLARE_RO(name) \
- static int proc_##name##_open(struct inode *inode, struct file *file) \
- { \
- @@ -126,6 +160,7 @@ static int do_proc_make_entry(const char *name, umode_t mode,
- .release = single_release, \
- .write = proc_##name##_write, \
- };
- +#endif
-
- #define proc_make_entry_ro(name, parent, wnd) \
- do_proc_make_entry(#name, S_IFREG | S_IRUSR | S_IRGRP, parent, \
|