[Kernel-packages] [Bug 1910618] Re: bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS
*** This bug is a duplicate of bug 1872908 *** https://bugs.launchpad.net/bugs/1872908 ** This bug has been marked a duplicate of bug 1872908 bcmwl kernel module does not build with 5.6.0 kernel or later -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to bcmwl in Ubuntu. https://bugs.launchpad.net/bugs/1910618 Title: bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS Status in bcmwl package in Ubuntu: Confirmed Bug description: Ubuntu 20.04.1 LTS bcmwl-kernel-source_6.30.223.271 I believe the important part of the /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log is below. /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c: In function ‘wl_reg_proc_entry’: /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:3376:58: error: passing argument 4 of ‘proc_create_data’ from incompatible pointe r type [-Werror=incompatible-pointer-types] 3376 | if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _fops, wl)) == NULL) { | ^~~~ | | | const struct file_operations * In file included from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:38: ./include/linux/proc_fs.h:102:31: note: expected ‘const struct proc_ops *’ but argument is of type ‘const struct file_operations *’ 102 | extern struct proc_dir_entry *proc_create_data(const char *, umode_t, | ^~~~ It looks like /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c uses the file_operations structure. lines 3359-3381 from wl_linux.c #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) static const struct file_operations wl_fops = { .owner = THIS_MODULE, .read = wl_proc_read, .write = wl_proc_write, }; #endif static int wl_reg_proc_entry(wl_info_t *wl) { char tmp[32]; sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit); #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); #else if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _fops, wl)) == NULL) { WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp)); #endif ASSERT(0); return -1; } However, it looks like proc_fs.h uses a different structure (proc_ops). /usr/src/linux-headers-5.8.0-34-generic/include/linux/proc_fs.h /usr/src/linux-hwe-5.8-headers-5.8.0-34/include/linux/proc_fs.h kernel 5.8.0-34 proc_fs.h lines 29-43 struct proc_ops { unsigned int proc_flags; int (*proc_open)(struct inode *, struct file *); ssize_t (*proc_read)(struct file *, char __user *, size_t, loff_t *); ssize_t (*proc_write)(struct file *, const char __user *, size_t, loff_t *); loff_t (*proc_lseek)(struct file *, loff_t, int); int (*proc_release)(struct inode *, struct file *); __poll_t (*proc_poll)(struct file *, struct poll_table_struct *); long(*proc_ioctl)(struct file *, unsigned int, unsigned long); #ifdef CONFIG_COMPAT long(*proc_compat_ioctl)(struct file *, unsigned int, unsigned long); #endif int (*proc_mmap)(struct file *, struct vm_area_struct *); unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); } __randomize_layout; and lines 102-107 extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, const struct proc_ops *, void *); struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct proc_ops *proc_ops); Looking back at the linux 5.4.0-59 headers, proc_fs.h appears to use the file_operations structure. /usr/src/linux-headers-5.4.0-59-generic/include/linux/proc_fs.h /usr/src/linux-headers-5.4.0-59/include/linux/proc_fs.h kernel 5.4.0-59 proc_fs.h lines 44-49 extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, const struct file_operations *, void *); struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops); If this is where the problem lies, I
[Kernel-packages] [Bug 1910618] Re: bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS
Hi @zdravko-g Thank you for the update. I have temporarily removed bcmwl-kernel-source and have installed broadcom-sta until the new release comes out. WiFi is currently running. It will be interesting to how the file_operations to proc_ops conversion is dealt with in the new release (wl_linux.c) or if I am chasing the wrong rabbit. -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to bcmwl in Ubuntu. https://bugs.launchpad.net/bugs/1910618 Title: bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS Status in bcmwl package in Ubuntu: Confirmed Bug description: Ubuntu 20.04.1 LTS bcmwl-kernel-source_6.30.223.271 I believe the important part of the /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log is below. /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c: In function ‘wl_reg_proc_entry’: /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:3376:58: error: passing argument 4 of ‘proc_create_data’ from incompatible pointe r type [-Werror=incompatible-pointer-types] 3376 | if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _fops, wl)) == NULL) { | ^~~~ | | | const struct file_operations * In file included from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:38: ./include/linux/proc_fs.h:102:31: note: expected ‘const struct proc_ops *’ but argument is of type ‘const struct file_operations *’ 102 | extern struct proc_dir_entry *proc_create_data(const char *, umode_t, | ^~~~ It looks like /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c uses the file_operations structure. lines 3359-3381 from wl_linux.c #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) static const struct file_operations wl_fops = { .owner = THIS_MODULE, .read = wl_proc_read, .write = wl_proc_write, }; #endif static int wl_reg_proc_entry(wl_info_t *wl) { char tmp[32]; sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit); #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); #else if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _fops, wl)) == NULL) { WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp)); #endif ASSERT(0); return -1; } However, it looks like proc_fs.h uses a different structure (proc_ops). /usr/src/linux-headers-5.8.0-34-generic/include/linux/proc_fs.h /usr/src/linux-hwe-5.8-headers-5.8.0-34/include/linux/proc_fs.h kernel 5.8.0-34 proc_fs.h lines 29-43 struct proc_ops { unsigned int proc_flags; int (*proc_open)(struct inode *, struct file *); ssize_t (*proc_read)(struct file *, char __user *, size_t, loff_t *); ssize_t (*proc_write)(struct file *, const char __user *, size_t, loff_t *); loff_t (*proc_lseek)(struct file *, loff_t, int); int (*proc_release)(struct inode *, struct file *); __poll_t (*proc_poll)(struct file *, struct poll_table_struct *); long(*proc_ioctl)(struct file *, unsigned int, unsigned long); #ifdef CONFIG_COMPAT long(*proc_compat_ioctl)(struct file *, unsigned int, unsigned long); #endif int (*proc_mmap)(struct file *, struct vm_area_struct *); unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); } __randomize_layout; and lines 102-107 extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, const struct proc_ops *, void *); struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct proc_ops *proc_ops); Looking back at the linux 5.4.0-59 headers, proc_fs.h appears to use the file_operations structure. /usr/src/linux-headers-5.4.0-59-generic/include/linux/proc_fs.h /usr/src/linux-headers-5.4.0-59/include/linux/proc_fs.h kernel 5.4.0-59 proc_fs.h lines 44-49 extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, const struct file_operations *, void *); struct proc_dir_entry *proc_create(const char *name, umode_t
[Kernel-packages] [Bug 1910618] Re: bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS
Hi @paulwil, Your bug seems duplicate of Bug #1910555. Take a look there for workaround till Canonical fix gets released. Just a obsolete function ioremap_nocache (and one more thing) together with delayed new release of bcmwl-kernel-source (who knows why), where new patch has added, dealing with the changes. Hope this helps. -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to bcmwl in Ubuntu. https://bugs.launchpad.net/bugs/1910618 Title: bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS Status in bcmwl package in Ubuntu: Confirmed Bug description: Ubuntu 20.04.1 LTS bcmwl-kernel-source_6.30.223.271 I believe the important part of the /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log is below. /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c: In function ‘wl_reg_proc_entry’: /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:3376:58: error: passing argument 4 of ‘proc_create_data’ from incompatible pointe r type [-Werror=incompatible-pointer-types] 3376 | if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _fops, wl)) == NULL) { | ^~~~ | | | const struct file_operations * In file included from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:38: ./include/linux/proc_fs.h:102:31: note: expected ‘const struct proc_ops *’ but argument is of type ‘const struct file_operations *’ 102 | extern struct proc_dir_entry *proc_create_data(const char *, umode_t, | ^~~~ It looks like /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c uses the file_operations structure. lines 3359-3381 from wl_linux.c #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) static const struct file_operations wl_fops = { .owner = THIS_MODULE, .read = wl_proc_read, .write = wl_proc_write, }; #endif static int wl_reg_proc_entry(wl_info_t *wl) { char tmp[32]; sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit); #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); #else if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _fops, wl)) == NULL) { WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp)); #endif ASSERT(0); return -1; } However, it looks like proc_fs.h uses a different structure (proc_ops). /usr/src/linux-headers-5.8.0-34-generic/include/linux/proc_fs.h /usr/src/linux-hwe-5.8-headers-5.8.0-34/include/linux/proc_fs.h kernel 5.8.0-34 proc_fs.h lines 29-43 struct proc_ops { unsigned int proc_flags; int (*proc_open)(struct inode *, struct file *); ssize_t (*proc_read)(struct file *, char __user *, size_t, loff_t *); ssize_t (*proc_write)(struct file *, const char __user *, size_t, loff_t *); loff_t (*proc_lseek)(struct file *, loff_t, int); int (*proc_release)(struct inode *, struct file *); __poll_t (*proc_poll)(struct file *, struct poll_table_struct *); long(*proc_ioctl)(struct file *, unsigned int, unsigned long); #ifdef CONFIG_COMPAT long(*proc_compat_ioctl)(struct file *, unsigned int, unsigned long); #endif int (*proc_mmap)(struct file *, struct vm_area_struct *); unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); } __randomize_layout; and lines 102-107 extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, const struct proc_ops *, void *); struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct proc_ops *proc_ops); Looking back at the linux 5.4.0-59 headers, proc_fs.h appears to use the file_operations structure. /usr/src/linux-headers-5.4.0-59-generic/include/linux/proc_fs.h /usr/src/linux-headers-5.4.0-59/include/linux/proc_fs.h kernel 5.4.0-59 proc_fs.h lines 44-49 extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, const struct file_operations *, void *); struct proc_dir_entry *proc_create(const char *name, umode_t mode,
[Kernel-packages] [Bug 1910618] Re: bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS
Status changed to 'Confirmed' because the bug affects multiple users. ** Changed in: bcmwl (Ubuntu) Status: New => Confirmed -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to bcmwl in Ubuntu. https://bugs.launchpad.net/bugs/1910618 Title: bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS Status in bcmwl package in Ubuntu: Confirmed Bug description: Ubuntu 20.04.1 LTS bcmwl-kernel-source_6.30.223.271 I believe the important part of the /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log is below. /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c: In function ‘wl_reg_proc_entry’: /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:3376:58: error: passing argument 4 of ‘proc_create_data’ from incompatible pointe r type [-Werror=incompatible-pointer-types] 3376 | if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _fops, wl)) == NULL) { | ^~~~ | | | const struct file_operations * In file included from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:38: ./include/linux/proc_fs.h:102:31: note: expected ‘const struct proc_ops *’ but argument is of type ‘const struct file_operations *’ 102 | extern struct proc_dir_entry *proc_create_data(const char *, umode_t, | ^~~~ It looks like /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c uses the file_operations structure. lines 3359-3381 from wl_linux.c #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) static const struct file_operations wl_fops = { .owner = THIS_MODULE, .read = wl_proc_read, .write = wl_proc_write, }; #endif static int wl_reg_proc_entry(wl_info_t *wl) { char tmp[32]; sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit); #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); #else if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _fops, wl)) == NULL) { WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp)); #endif ASSERT(0); return -1; } However, it looks like proc_fs.h uses a different structure (proc_ops). /usr/src/linux-headers-5.8.0-34-generic/include/linux/proc_fs.h /usr/src/linux-hwe-5.8-headers-5.8.0-34/include/linux/proc_fs.h kernel 5.8.0-34 proc_fs.h lines 29-43 struct proc_ops { unsigned int proc_flags; int (*proc_open)(struct inode *, struct file *); ssize_t (*proc_read)(struct file *, char __user *, size_t, loff_t *); ssize_t (*proc_write)(struct file *, const char __user *, size_t, loff_t *); loff_t (*proc_lseek)(struct file *, loff_t, int); int (*proc_release)(struct inode *, struct file *); __poll_t (*proc_poll)(struct file *, struct poll_table_struct *); long(*proc_ioctl)(struct file *, unsigned int, unsigned long); #ifdef CONFIG_COMPAT long(*proc_compat_ioctl)(struct file *, unsigned int, unsigned long); #endif int (*proc_mmap)(struct file *, struct vm_area_struct *); unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); } __randomize_layout; and lines 102-107 extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, const struct proc_ops *, void *); struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct proc_ops *proc_ops); Looking back at the linux 5.4.0-59 headers, proc_fs.h appears to use the file_operations structure. /usr/src/linux-headers-5.4.0-59-generic/include/linux/proc_fs.h /usr/src/linux-headers-5.4.0-59/include/linux/proc_fs.h kernel 5.4.0-59 proc_fs.h lines 44-49 extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, const struct file_operations *, void *); struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops); If this is where the problem lies, I am guessing it is better to try to fix the Broadcom package/ wl_linux.c than
[Kernel-packages] [Bug 1910618] Re: bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS
** Summary changed: - bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04 LTS + bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to bcmwl in Ubuntu. https://bugs.launchpad.net/bugs/1910618 Title: bcmwl 6.30.223.271+bdcom build fails with kernel 5.8.0-34/36 Ubuntu 20.04.1 LTS Status in bcmwl package in Ubuntu: New Bug description: Ubuntu 20.04.1 LTS bcmwl-kernel-source_6.30.223.271 I believe the important part of the /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/make.log is below. /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c: In function ‘wl_reg_proc_entry’: /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:3376:58: error: passing argument 4 of ‘proc_create_data’ from incompatible pointe r type [-Werror=incompatible-pointer-types] 3376 | if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _fops, wl)) == NULL) { | ^~~~ | | | const struct file_operations * In file included from /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c:38: ./include/linux/proc_fs.h:102:31: note: expected ‘const struct proc_ops *’ but argument is of type ‘const struct file_operations *’ 102 | extern struct proc_dir_entry *proc_create_data(const char *, umode_t, | ^~~~ It looks like /var/lib/dkms/bcmwl/6.30.223.271+bdcom/build/src/wl/sys/wl_linux.c uses the file_operations structure. lines 3359-3381 from wl_linux.c #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0) static const struct file_operations wl_fops = { .owner = THIS_MODULE, .read = wl_proc_read, .write = wl_proc_write, }; #endif static int wl_reg_proc_entry(wl_info_t *wl) { char tmp[32]; sprintf(tmp, "%s%d", HYBRID_PROC, wl->pub->unit); #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0) if ((wl->proc_entry = create_proc_entry(tmp, 0644, NULL)) == NULL) { WL_ERROR(("%s: create_proc_entry %s failed\n", __FUNCTION__, tmp)); #else if ((wl->proc_entry = proc_create_data(tmp, 0644, NULL, _fops, wl)) == NULL) { WL_ERROR(("%s: proc_create_data %s failed\n", __FUNCTION__, tmp)); #endif ASSERT(0); return -1; } However, it looks like proc_fs.h uses a different structure (proc_ops). /usr/src/linux-headers-5.8.0-34-generic/include/linux/proc_fs.h /usr/src/linux-hwe-5.8-headers-5.8.0-34/include/linux/proc_fs.h kernel 5.8.0-34 proc_fs.h lines 29-43 struct proc_ops { unsigned int proc_flags; int (*proc_open)(struct inode *, struct file *); ssize_t (*proc_read)(struct file *, char __user *, size_t, loff_t *); ssize_t (*proc_write)(struct file *, const char __user *, size_t, loff_t *); loff_t (*proc_lseek)(struct file *, loff_t, int); int (*proc_release)(struct inode *, struct file *); __poll_t (*proc_poll)(struct file *, struct poll_table_struct *); long(*proc_ioctl)(struct file *, unsigned int, unsigned long); #ifdef CONFIG_COMPAT long(*proc_compat_ioctl)(struct file *, unsigned int, unsigned long); #endif int (*proc_mmap)(struct file *, struct vm_area_struct *); unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); } __randomize_layout; and lines 102-107 extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, const struct proc_ops *, void *); struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct proc_ops *proc_ops); Looking back at the linux 5.4.0-59 headers, proc_fs.h appears to use the file_operations structure. /usr/src/linux-headers-5.4.0-59-generic/include/linux/proc_fs.h /usr/src/linux-headers-5.4.0-59/include/linux/proc_fs.h kernel 5.4.0-59 proc_fs.h lines 44-49 extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, const struct file_operations *, void *); struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops); If this is where the problem lies, I am guessing it is better to try to