diff --git a/executer/kernel/mcctrl/sysfs_files.c b/executer/kernel/mcctrl/sysfs_files.c index 27ffbb06..96cca0e2 100644 --- a/executer/kernel/mcctrl/sysfs_files.c +++ b/executer/kernel/mcctrl/sysfs_files.c @@ -951,30 +951,14 @@ out: return error; } /* read_link() */ -#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */ static int setup_one_pci(struct mcctrl_usrdata *udp, const char *name) { -#else /* POSTK_DEBUG_TEMP_FIX_22 */ -static int setup_one_pci(void *arg0, const char *name, int namlen, - loff_t offset, u64 ino, unsigned d_type) -{ - struct mcctrl_usrdata *udp = arg0; -#endif /* POSTK_DEBUG_TEMP_FIX_22 */ int error; char *buf = NULL; long node; struct sysfsm_bitmap_param param; -#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */ dprintk("setup_one_pci(%p,%s)\n", udp, name); -#else /* POSTK_DEBUG_TEMP_FIX_22 */ - dprintk("setup_one_pci(%p,%s,%d,%#lx,%#lx,%d)\n", - arg0, name, namlen, (long)offset, (long)ino, d_type); - if (namlen != 12) { - error = 0; - goto out; - } -#endif /* POSTK_DEBUG_TEMP_FIX_22 */ buf = (void *)__get_free_pages(GFP_KERNEL, 0); if (!buf) { @@ -1026,17 +1010,10 @@ static int setup_one_pci(void *arg0, const char *name, int namlen, error = 0; out: free_pages((long)buf, 0); -#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */ dprintk("setup_one_pci(%p,%s): %d\n", udp, name, error); -#else /* POSTK_DEBUG_TEMP_FIX_22 */ - dprintk("setup_one_pci(%p,%s,%d,%#lx,%#lx,%d): %d\n", - arg0, name, namlen, (long)offset, (long)ino, d_type, - error); -#endif /* POSTK_DEBUG_TEMP_FIX_22 */ return error; } /* setup_one_pci() */ -#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */ LIST_HEAD(pci_file_name_list); struct pci_file_name { char *name; @@ -1083,9 +1060,9 @@ out: buf, name, namlen, (long)offset, (long)ino, d_type, error); return error; } -#endif /* POSTK_DEBUG_TEMP_FIX_22 */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) || \ + (defined(RHEL_RELEASE_CODE) && RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5)) typedef int (*mcctrl_filldir_t)(void *buf, const char *name, int namlen, loff_t offset, u64 ino, unsigned d_type); @@ -1095,8 +1072,13 @@ struct mcctrl_filler_args { void *buf; }; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0) static int mcctrl_filler(struct dir_context *ctx, const char *name, - int namlen, loff_t offset, u64 ino, unsigned d_type) + int namlen, loff_t offset, u64 ino, unsigned int d_type) +#else +static int mcctrl_filler(void *ctx, const char *name, + int namlen, loff_t offset, u64 ino, unsigned int d_type) +#endif { struct mcctrl_filler_args *args = container_of(ctx, struct mcctrl_filler_args, ctx); @@ -1109,7 +1091,7 @@ static inline int mcctrl_vfs_readdir(struct file *file, { struct mcctrl_filler_args args = { .ctx.actor = &mcctrl_filler, - .filler = (void *)filler, + .filler = filler, .buf = buf, }; @@ -1128,11 +1110,9 @@ static int setup_pci_files(struct mcctrl_usrdata *udp) int error; int er; struct file *fp = NULL; -#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */ int ret = 0; struct pci_file_name *cur; struct pci_file_name *next; -#endif /* POSTK_DEBUG_TEMP_FIX_22 */ dprintk("setup_pci_files(%p)\n", udp); fp = filp_open("/sys/bus/pci/devices", O_DIRECTORY, 0); @@ -1142,18 +1122,13 @@ static int setup_pci_files(struct mcctrl_usrdata *udp) goto out; } -#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */ error = mcctrl_vfs_readdir(fp, &pci_file_name_gen, udp); -#else /* POSTK_DEBUG_TEMP_FIX_22 */ - error = mcctrl_vfs_readdir(fp, &setup_one_pci, udp); -#endif /* POSTK_DEBUG_TEMP_FIX_22 */ if (error) { eprintk("mcctrl:setup_pci_files:" "mcctrl_vfs_readdir failed. %d\n", error); goto out; } -#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */ list_for_each_entry_safe(cur, next, &pci_file_name_list, chain) { if (!ret) { ret = setup_one_pci(udp, cur->name); @@ -1162,7 +1137,6 @@ static int setup_pci_files(struct mcctrl_usrdata *udp) kfree(cur->name); kfree(cur); } -#endif /* POSTK_DEBUG_TEMP_FIX_22 */ error = 0; out: