Merge branch 'kmemtrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 6 Apr 2009 20:30:00 +0000 (13:30 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 6 Apr 2009 20:30:00 +0000 (13:30 -0700)
* 'kmemtrace-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  kmemtrace: trace kfree() calls with NULL or zero-length objects
  kmemtrace: small cleanups
  kmemtrace: restore original tracing data binary format, improve ABI
  kmemtrace: kmemtrace_alloc() must fill type_id
  kmemtrace: use tracepoints
  kmemtrace, rcu: don't include unnecessary headers, allow kmemtrace w/ tracepoints
  kmemtrace, rcu: fix rcupreempt.c data structure dependencies
  kmemtrace, rcu: fix rcu_tree_trace.c data structure dependencies
  kmemtrace, rcu: fix linux/rcutree.h and linux/rcuclassic.h dependencies
  kmemtrace, mm: fix slab.h dependency problem in mm/failslab.c
  kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_unlzma.c
  kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_bunzip2.c
  kmemtrace, kbuild: fix slab.h dependency problem in lib/decompress_inflate.c
  kmemtrace, squashfs: fix slab.h dependency problem in squasfs
  kmemtrace, befs: fix slab.h dependency problem
  kmemtrace, security: fix linux/key.h header file dependencies
  kmemtrace, fs: fix linux/fdtable.h header file dependencies
  kmemtrace, fs: uninline simple_transaction_set()
  kmemtrace, fs, security: move alloc_secdata() and free_secdata() to linux/security.h

1  2 
include/linux/fs.h
mm/slab.c

diff --combined include/linux/fs.h
index cae5720f431c5625ee6f306fdc7b0b2c6d2d06bd,e4de2b543a7316933936c08b9cf448275f8c4504..bce40a2207ee09cb805f1b8a357633cfc9911385
@@@ -95,12 -95,8 +95,12 @@@ struct inodes_stat_t 
  #define SWRITE 3      /* for ll_rw_block() - wait for buffer lock */
  #define READ_SYNC     (READ | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
  #define READ_META     (READ | (1 << BIO_RW_META))
 -#define WRITE_SYNC    (WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
 -#define SWRITE_SYNC   (SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
 +#define WRITE_SYNC_PLUG       (WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE))
 +#define WRITE_SYNC    (WRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG))
 +#define WRITE_ODIRECT (WRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_UNPLUG))
 +#define SWRITE_SYNC_PLUG      \
 +                      (SWRITE | (1 << BIO_RW_SYNCIO) | (1 << BIO_RW_NOIDLE))
 +#define SWRITE_SYNC   (SWRITE_SYNC_PLUG | (1 << BIO_RW_UNPLUG))
  #define WRITE_BARRIER (WRITE | (1 << BIO_RW_BARRIER))
  #define DISCARD_NOBARRIER (1 << BIO_RW_DISCARD)
  #define DISCARD_BARRIER ((1 << BIO_RW_DISCARD) | (1 << BIO_RW_BARRIER))
@@@ -1745,8 -1741,6 +1745,8 @@@ extern void drop_collected_mounts(struc
  
  extern int vfs_statfs(struct dentry *, struct kstatfs *);
  
 +extern int current_umask(void);
 +
  /* /sys/fs */
  extern struct kobject *fs_kobj;
  
@@@ -1891,18 -1885,6 +1891,18 @@@ extern int fsync_super(struct super_blo
  extern int fsync_no_super(struct block_device *);
  #else
  static inline void bd_forget(struct inode *inode) {}
 +static inline int sync_blockdev(struct block_device *bdev) { return 0; }
 +static inline void invalidate_bdev(struct block_device *bdev) {}
 +
 +static inline struct super_block *freeze_bdev(struct block_device *sb)
 +{
 +      return NULL;
 +}
 +
 +static inline int thaw_bdev(struct block_device *bdev, struct super_block *sb)
 +{
 +      return 0;
 +}
  #endif
  extern const struct file_operations def_blk_fops;
  extern const struct file_operations def_chr_fops;
@@@ -2341,19 -2323,7 +2341,7 @@@ ssize_t simple_transaction_read(struct 
                                size_t size, loff_t *pos);
  int simple_transaction_release(struct inode *inode, struct file *file);
  
- static inline void simple_transaction_set(struct file *file, size_t n)
- {
-       struct simple_transaction_argresp *ar = file->private_data;
-       BUG_ON(n > SIMPLE_TRANSACTION_LIMIT);
-       /*
-        * The barrier ensures that ar->size will really remain zero until
-        * ar->data is ready for reading.
-        */
-       smp_mb();
-       ar->size = n;
- }
+ void simple_transaction_set(struct file *file, size_t n);
  
  /*
   * simple attribute files
@@@ -2400,27 -2370,6 +2388,6 @@@ ssize_t simple_attr_read(struct file *f
  ssize_t simple_attr_write(struct file *file, const char __user *buf,
                          size_t len, loff_t *ppos);
  
- #ifdef CONFIG_SECURITY
- static inline char *alloc_secdata(void)
- {
-       return (char *)get_zeroed_page(GFP_KERNEL);
- }
- static inline void free_secdata(void *secdata)
- {
-       free_page((unsigned long)secdata);
- }
- #else
- static inline char *alloc_secdata(void)
- {
-       return (char *)1;
- }
- static inline void free_secdata(void *secdata)
- { }
- #endif        /* CONFIG_SECURITY */
  struct ctl_table;
  int proc_nr_files(struct ctl_table *table, int write, struct file *filp,
                  void __user *buffer, size_t *lenp, loff_t *ppos);
diff --combined mm/slab.c
index 4fc1761c6dc8c88dfc988e54216d734cebde450f,b584002850305662a665577a5b03ebe7c44a8f3b..9a90b00d2f9140e2aaa67ecb949e33d89431e9c5
+++ b/mm/slab.c
@@@ -1169,7 -1169,7 +1169,7 @@@ static void __cpuinit cpuup_canceled(lo
        struct kmem_cache *cachep;
        struct kmem_list3 *l3 = NULL;
        int node = cpu_to_node(cpu);
 -      node_to_cpumask_ptr(mask, node);
 +      const struct cpumask *mask = cpumask_of_node(node);
  
        list_for_each_entry(cachep, &cache_chain, next) {
                struct array_cache *nc;
@@@ -3565,8 -3565,8 +3565,8 @@@ void *kmem_cache_alloc(struct kmem_cach
  {
        void *ret = __cache_alloc(cachep, flags, __builtin_return_address(0));
  
-       kmemtrace_mark_alloc(KMEMTRACE_TYPE_CACHE, _RET_IP_, ret,
-                            obj_size(cachep), cachep->buffer_size, flags);
+       trace_kmem_cache_alloc(_RET_IP_, ret,
+                              obj_size(cachep), cachep->buffer_size, flags);
  
        return ret;
  }
@@@ -3627,9 -3627,9 +3627,9 @@@ void *kmem_cache_alloc_node(struct kmem
        void *ret = __cache_alloc_node(cachep, flags, nodeid,
                                       __builtin_return_address(0));
  
-       kmemtrace_mark_alloc_node(KMEMTRACE_TYPE_CACHE, _RET_IP_, ret,
-                                 obj_size(cachep), cachep->buffer_size,
-                                 flags, nodeid);
+       trace_kmem_cache_alloc_node(_RET_IP_, ret,
+                                   obj_size(cachep), cachep->buffer_size,
+                                   flags, nodeid);
  
        return ret;
  }
@@@ -3657,9 -3657,8 +3657,8 @@@ __do_kmalloc_node(size_t size, gfp_t fl
                return cachep;
        ret = kmem_cache_alloc_node_notrace(cachep, flags, node);
  
-       kmemtrace_mark_alloc_node(KMEMTRACE_TYPE_KMALLOC,
-                                 (unsigned long) caller, ret,
-                                 size, cachep->buffer_size, flags, node);
+       trace_kmalloc_node((unsigned long) caller, ret,
+                          size, cachep->buffer_size, flags, node);
  
        return ret;
  }
@@@ -3709,9 -3708,8 +3708,8 @@@ static __always_inline void *__do_kmall
                return cachep;
        ret = __cache_alloc(cachep, flags, caller);
  
-       kmemtrace_mark_alloc(KMEMTRACE_TYPE_KMALLOC,
-                            (unsigned long) caller, ret,
-                            size, cachep->buffer_size, flags);
+       trace_kmalloc((unsigned long) caller, ret,
+                     size, cachep->buffer_size, flags);
  
        return ret;
  }
@@@ -3757,7 -3755,7 +3755,7 @@@ void kmem_cache_free(struct kmem_cache 
        __cache_free(cachep, objp);
        local_irq_restore(flags);
  
-       kmemtrace_mark_free(KMEMTRACE_TYPE_CACHE, _RET_IP_, objp);
+       trace_kmem_cache_free(_RET_IP_, objp);
  }
  EXPORT_SYMBOL(kmem_cache_free);
  
@@@ -3775,6 -3773,8 +3773,8 @@@ void kfree(const void *objp
        struct kmem_cache *c;
        unsigned long flags;
  
+       trace_kfree(_RET_IP_, objp);
        if (unlikely(ZERO_OR_NULL_PTR(objp)))
                return;
        local_irq_save(flags);
        debug_check_no_obj_freed(objp, obj_size(c));
        __cache_free(c, (void *)objp);
        local_irq_restore(flags);
-       kmemtrace_mark_free(KMEMTRACE_TYPE_KMALLOC, _RET_IP_, objp);
  }
  EXPORT_SYMBOL(kfree);
  
@@@ -4049,7 -4047,8 +4047,7 @@@ static void cache_reap(struct work_stru
        struct kmem_cache *searchp;
        struct kmem_list3 *l3;
        int node = numa_node_id();
 -      struct delayed_work *work =
 -              container_of(w, struct delayed_work, work);
 +      struct delayed_work *work = to_delayed_work(w);
  
        if (!mutex_trylock(&cache_chain_mutex))
                /* Give up. Setup the next iteration. */