drivers/net/wireless/broadcom/b43legacy/debugfs.c:224:23: error: implicit declaration of function 'debugfs_real_fops'

From: kbuild test robot
Date: Thu Nov 16 2017 - 20:16:03 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: cf9b0772f2e410645fece13b749bd56505b998b8
commit: 7c8d469877b16d2c1cecf101a0abb7b218db85bc debugfs: add support for more elaborate ->d_fsdata
date: 9 days ago
config: x86_64-randconfig-s1-11170747 (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
git checkout 7c8d469877b16d2c1cecf101a0abb7b218db85bc
# save the attached .config to linux build tree
make ARCH=x86_64

All error/warnings (new ones prefixed by >>):

In file included from include/linux/list.h:8:0,
from include/linux/wait.h:6,
from include/linux/wait_bit.h:7,
from include/linux/fs.h:5,
from drivers/net/wireless/broadcom/b43legacy/debugfs.c:26:
drivers/net/wireless/broadcom/b43legacy/debugfs.c: In function 'b43legacy_debugfs_read':
>> drivers/net/wireless/broadcom/b43legacy/debugfs.c:224:23: error: implicit declaration of function 'debugfs_real_fops' [-Werror=implicit-function-declaration]
dfops = container_of(debugfs_real_fops(file),
^
include/linux/kernel.h:927:26: note: in definition of macro 'container_of'
void *__mptr = (void *)(ptr); \
^~~
include/linux/kernel.h:927:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
void *__mptr = (void *)(ptr); \
^
>> drivers/net/wireless/broadcom/b43legacy/debugfs.c:224:10: note: in expansion of macro 'container_of'
dfops = container_of(debugfs_real_fops(file),
^~~~~~~~~~~~
In file included from include/linux/linkage.h:4:0,
from include/linux/fs.h:4,
from drivers/net/wireless/broadcom/b43legacy/debugfs.c:26:
include/linux/kernel.h:928:32: error: invalid type argument of unary '*' (have 'int')
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~
include/linux/compiler.h:553:19: note: in definition of macro '__compiletime_assert'
bool __cond = !(condition); \
^~~~~~~~~
include/linux/compiler.h:576:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:46:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:928:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~~~~~~
include/linux/kernel.h:928:20: note: in expansion of macro '__same_type'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~
>> drivers/net/wireless/broadcom/b43legacy/debugfs.c:224:10: note: in expansion of macro 'container_of'
dfops = container_of(debugfs_real_fops(file),
^~~~~~~~~~~~
include/linux/kernel.h:929:18: error: invalid type argument of unary '*' (have 'int')
!__same_type(*(ptr), void), \
^~~~~~
include/linux/compiler.h:553:19: note: in definition of macro '__compiletime_assert'
bool __cond = !(condition); \
^~~~~~~~~
include/linux/compiler.h:576:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:46:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:928:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~~~~~~
include/linux/kernel.h:929:6: note: in expansion of macro '__same_type'
!__same_type(*(ptr), void), \
^~~~~~~~~~~
>> drivers/net/wireless/broadcom/b43legacy/debugfs.c:224:10: note: in expansion of macro 'container_of'
dfops = container_of(debugfs_real_fops(file),
^~~~~~~~~~~~
In file included from include/linux/list.h:8:0,
from include/linux/wait.h:6,
from include/linux/wait_bit.h:7,
from include/linux/fs.h:5,
from drivers/net/wireless/broadcom/b43legacy/debugfs.c:26:
drivers/net/wireless/broadcom/b43legacy/debugfs.c: In function 'b43legacy_debugfs_write':
include/linux/kernel.h:927:17: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
void *__mptr = (void *)(ptr); \
^
drivers/net/wireless/broadcom/b43legacy/debugfs.c:291:10: note: in expansion of macro 'container_of'
dfops = container_of(debugfs_real_fops(file),
^~~~~~~~~~~~
In file included from include/linux/linkage.h:4:0,
from include/linux/fs.h:4,
from drivers/net/wireless/broadcom/b43legacy/debugfs.c:26:
include/linux/kernel.h:928:32: error: invalid type argument of unary '*' (have 'int')
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~
include/linux/compiler.h:553:19: note: in definition of macro '__compiletime_assert'
bool __cond = !(condition); \
^~~~~~~~~
include/linux/compiler.h:576:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:46:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:928:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~~~~~~
include/linux/kernel.h:928:20: note: in expansion of macro '__same_type'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~
drivers/net/wireless/broadcom/b43legacy/debugfs.c:291:10: note: in expansion of macro 'container_of'
dfops = container_of(debugfs_real_fops(file),
^~~~~~~~~~~~
include/linux/kernel.h:929:18: error: invalid type argument of unary '*' (have 'int')
!__same_type(*(ptr), void), \
^~~~~~
include/linux/compiler.h:553:19: note: in definition of macro '__compiletime_assert'
bool __cond = !(condition); \
^~~~~~~~~
include/linux/compiler.h:576:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:46:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:928:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~~~~~~
include/linux/kernel.h:929:6: note: in expansion of macro '__same_type'
!__same_type(*(ptr), void), \
^~~~~~~~~~~
drivers/net/wireless/broadcom/b43legacy/debugfs.c:291:10: note: in expansion of macro 'container_of'
dfops = container_of(debugfs_real_fops(file),
^~~~~~~~~~~~
cc1: some warnings being treated as errors

vim +/debugfs_real_fops +224 drivers/net/wireless/broadcom/b43legacy/debugfs.c

75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 25
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 @26 #include <linux/fs.h>
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 27 #include <linux/debugfs.h>
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 28 #include <linux/slab.h>
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 29 #include <linux/netdevice.h>
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 30 #include <linux/pci.h>
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 31 #include <linux/mutex.h>
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 32
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 33 #include "b43legacy.h"
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 34 #include "main.h"
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 35 #include "debugfs.h"
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 36 #include "dma.h"
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 37 #include "pio.h"
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 38 #include "xmit.h"
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 39
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 40
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 41 /* The root directory. */
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 42 static struct dentry *rootdir;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 43
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 44 struct b43legacy_debugfs_fops {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 45 ssize_t (*read)(struct b43legacy_wldev *dev, char *buf, size_t bufsize);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 46 int (*write)(struct b43legacy_wldev *dev, const char *buf, size_t count);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 47 struct file_operations fops;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 48 /* Offset of struct b43legacy_dfs_file in struct b43legacy_dfsentry */
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 49 size_t file_struct_offset;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 50 /* Take wl->irq_lock before calling read/write? */
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 51 bool take_irqlock;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 52 };
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 53
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 54 static inline
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 55 struct b43legacy_dfs_file * fops_to_dfs_file(struct b43legacy_wldev *dev,
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 56 const struct b43legacy_debugfs_fops *dfops)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 57 {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 58 void *p;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 59
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 60 p = dev->dfsentry;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 61 p += dfops->file_struct_offset;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 62
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 63 return p;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 64 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 65
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 66
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 67 #define fappend(fmt, x...) \
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 68 do { \
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 69 if (bufsize - count) \
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 70 count += snprintf(buf + count, \
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 71 bufsize - count, \
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 72 fmt , ##x); \
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 73 else \
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 74 printk(KERN_ERR "b43legacy: fappend overflow\n"); \
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 75 } while (0)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 76
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 77
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 78 /* wl->irq_lock is locked */
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 79 static ssize_t tsf_read_file(struct b43legacy_wldev *dev, char *buf, size_t bufsize)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 80 {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 81 ssize_t count = 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 82 u64 tsf;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 83
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 84 b43legacy_tsf_read(dev, &tsf);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 85 fappend("0x%08x%08x\n",
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 86 (unsigned int)((tsf & 0xFFFFFFFF00000000ULL) >> 32),
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 87 (unsigned int)(tsf & 0xFFFFFFFFULL));
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 88
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 89 return count;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 90 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 91
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 92 /* wl->irq_lock is locked */
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 93 static int tsf_write_file(struct b43legacy_wldev *dev, const char *buf, size_t count)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 94 {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 95 u64 tsf;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 96
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 97 if (sscanf(buf, "%llu", (unsigned long long *)(&tsf)) != 1)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 98 return -EINVAL;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 99 b43legacy_tsf_write(dev, tsf);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 100
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 101 return 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 102 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 103
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 104 /* wl->irq_lock is locked */
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 105 static ssize_t ucode_regs_read_file(struct b43legacy_wldev *dev, char *buf, size_t bufsize)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 106 {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 107 ssize_t count = 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 108 int i;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 109
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 110 for (i = 0; i < 64; i++) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 111 fappend("r%d = 0x%04x\n", i,
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 112 b43legacy_shm_read16(dev, B43legacy_SHM_WIRELESS, i));
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 113 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 114
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 115 return count;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 116 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 117
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 118 /* wl->irq_lock is locked */
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 119 static ssize_t shm_read_file(struct b43legacy_wldev *dev, char *buf, size_t bufsize)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 120 {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 121 ssize_t count = 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 122 int i;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 123 u16 tmp;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 124 __le16 *le16buf = (__le16 *)buf;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 125
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 126 for (i = 0; i < 0x1000; i++) {
187a9dca3 drivers/net/wireless/b43legacy/debugfs.c Stefano Brivio 2007-11-06 127 if (bufsize < sizeof(tmp))
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 128 break;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 129 tmp = b43legacy_shm_read16(dev, B43legacy_SHM_SHARED, 2 * i);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 130 le16buf[i] = cpu_to_le16(tmp);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 131 count += sizeof(tmp);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 132 bufsize -= sizeof(tmp);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 133 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 134
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 135 return count;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 136 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 137
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 138 static ssize_t txstat_read_file(struct b43legacy_wldev *dev, char *buf, size_t bufsize)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 139 {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 140 struct b43legacy_txstatus_log *log = &dev->dfsentry->txstatlog;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 141 ssize_t count = 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 142 unsigned long flags;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 143 int i, idx;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 144 struct b43legacy_txstatus *stat;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 145
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 146 spin_lock_irqsave(&log->lock, flags);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 147 if (log->end < 0) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 148 fappend("Nothing transmitted, yet\n");
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 149 goto out_unlock;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 150 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 151 fappend("b43legacy TX status reports:\n\n"
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 152 "index | cookie | seq | phy_stat | frame_count | "
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 153 "rts_count | supp_reason | pm_indicated | "
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 154 "intermediate | for_ampdu | acked\n" "---\n");
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 155 i = log->end + 1;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 156 idx = 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 157 while (1) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 158 if (i == B43legacy_NR_LOGGED_TXSTATUS)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 159 i = 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 160 stat = &(log->log[i]);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 161 if (stat->cookie) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 162 fappend("%03d | "
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 163 "0x%04X | 0x%04X | 0x%02X | "
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 164 "0x%X | 0x%X | "
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 165 "%u | %u | "
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 166 "%u | %u | %u\n",
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 167 idx,
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 168 stat->cookie, stat->seq, stat->phy_stat,
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 169 stat->frame_count, stat->rts_count,
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 170 stat->supp_reason, stat->pm_indicated,
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 171 stat->intermediate, stat->for_ampdu,
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 172 stat->acked);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 173 idx++;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 174 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 175 if (i == log->end)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 176 break;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 177 i++;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 178 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 179 out_unlock:
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 180 spin_unlock_irqrestore(&log->lock, flags);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 181
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 182 return count;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 183 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 184
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 185 /* wl->irq_lock is locked */
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 186 static int restart_write_file(struct b43legacy_wldev *dev, const char *buf, size_t count)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 187 {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 188 int err = 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 189
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 190 if (count > 0 && buf[0] == '1') {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 191 b43legacy_controller_restart(dev, "manually restarted");
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 192 } else
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 193 err = -EINVAL;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 194
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 195 return err;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 196 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 197
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 198 #undef fappend
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 199
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 200 static ssize_t b43legacy_debugfs_read(struct file *file, char __user *userbuf,
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 201 size_t count, loff_t *ppos)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 202 {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 203 struct b43legacy_wldev *dev;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 204 struct b43legacy_debugfs_fops *dfops;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 205 struct b43legacy_dfs_file *dfile;
125c5cc2c drivers/net/wireless/b43legacy/debugfs.c Frank Lichtenheld 2007-11-24 206 ssize_t uninitialized_var(ret);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 207 char *buf;
d8004cb92 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2008-12-09 208 const size_t bufsize = 1024 * 16; /* 16 KiB buffer */
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 209 const size_t buforder = get_order(bufsize);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 210 int err = 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 211
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 212 if (!count)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 213 return 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 214 dev = file->private_data;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 215 if (!dev)
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 216 return -ENODEV;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 217
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 218 mutex_lock(&dev->wl->mutex);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 219 if (b43legacy_status(dev) < B43legacy_STAT_INITIALIZED) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 220 err = -ENODEV;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 221 goto out_unlock;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 222 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 223
9c4a45b17 drivers/net/wireless/broadcom/b43legacy/debugfs.c Christian Lamparter 2016-09-17 @224 dfops = container_of(debugfs_real_fops(file),
9c4a45b17 drivers/net/wireless/broadcom/b43legacy/debugfs.c Christian Lamparter 2016-09-17 225 struct b43legacy_debugfs_fops, fops);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 226 if (!dfops->read) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 227 err = -ENOSYS;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 228 goto out_unlock;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 229 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 230 dfile = fops_to_dfs_file(dev, dfops);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 231
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 232 if (!dfile->buffer) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 233 buf = (char *)__get_free_pages(GFP_KERNEL, buforder);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 234 if (!buf) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 235 err = -ENOMEM;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 236 goto out_unlock;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 237 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 238 memset(buf, 0, bufsize);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 239 if (dfops->take_irqlock) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 240 spin_lock_irq(&dev->wl->irq_lock);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 241 ret = dfops->read(dev, buf, bufsize);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 242 spin_unlock_irq(&dev->wl->irq_lock);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 243 } else
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 244 ret = dfops->read(dev, buf, bufsize);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 245 if (ret <= 0) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 246 free_pages((unsigned long)buf, buforder);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 247 err = ret;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 248 goto out_unlock;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 249 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 250 dfile->data_len = ret;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 251 dfile->buffer = buf;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 252 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 253
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 254 ret = simple_read_from_buffer(userbuf, count, ppos,
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 255 dfile->buffer,
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 256 dfile->data_len);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 257 if (*ppos >= dfile->data_len) {
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 258 free_pages((unsigned long)dfile->buffer, buforder);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 259 dfile->buffer = NULL;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 260 dfile->data_len = 0;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 261 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 262 out_unlock:
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 263 mutex_unlock(&dev->wl->mutex);
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 264
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 265 return err ? err : ret;
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 266 }
75388acd0 drivers/net/wireless/b43legacy/debugfs.c Larry Finger 2007-09-25 267

:::::: The code at line 224 was first introduced by commit
:::::: 9c4a45b17e094a090e96beb1138e34c2a10c6b8c b43legacy: fix debugfs crash

:::::: TO: Christian Lamparter <chunkeey@xxxxxxxxxxxxxx>
:::::: CC: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip