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 <[email protected]>
:::::: CC: Greg Kroah-Hartman <[email protected]>

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

Attachment: .config.gz
Description: application/gzip

Reply via email to