diff -Nurp linux-5.5/3rdparty/ndiswrapper.old/ntoskernel.c linux-5.5/3rdparty/ndiswrapper/ntoskernel.c --- linux-5.5/3rdparty/ndiswrapper.old/ntoskernel.c 2020-04-04 02:01:55.554963846 +0300 +++ linux-5.5/3rdparty/ndiswrapper/ntoskernel.c 2020-04-04 02:05:37.273393948 +0300 @@ -1763,9 +1763,9 @@ wstdcall void __iomem *WIN_FUNC(MmMapIoS 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 -Nurp linux-5.5/3rdparty/ndiswrapper.old/proc.c linux-5.5/3rdparty/ndiswrapper/proc.c --- linux-5.5/3rdparty/ndiswrapper.old/proc.c 2020-04-04 01:59:47.629938696 +0300 +++ linux-5.5/3rdparty/ndiswrapper/proc.c 2020-04-04 02:05:37.273393948 +0300 @@ -70,7 +70,11 @@ static inline void *PDE_DATA(const struc #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 *pro 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 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 .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, \