[PATCH] taskstats: kill ->taskstats_lock in favor of ->siglock
[firefly-linux-kernel-4.4.55.git] / include / linux / taskstats_kern.h
index 664224008fb2ec600a1a32ca7b3ea395e60a964a..6562a2050a25a6c0d5762b338d80ea8e1c81d476 100644 (file)
@@ -23,28 +23,26 @@ static inline void taskstats_exit_free(struct taskstats *tidstats)
 
 static inline void taskstats_tgid_init(struct signal_struct *sig)
 {
-       spin_lock_init(&sig->stats_lock);
        sig->stats = NULL;
 }
 
-static inline void taskstats_tgid_alloc(struct signal_struct *sig)
+static inline void taskstats_tgid_alloc(struct task_struct *tsk)
 {
+       struct signal_struct *sig = tsk->signal;
        struct taskstats *stats;
-       unsigned long flags;
 
        if (sig->stats != NULL)
                return;
 
+       /* No problem if kmem_cache_zalloc() fails */
        stats = kmem_cache_zalloc(taskstats_cache, SLAB_KERNEL);
-       if (!stats)
-               return;
 
-       spin_lock_irqsave(&sig->stats_lock, flags);
+       spin_lock_irq(&tsk->sighand->siglock);
        if (!sig->stats) {
                sig->stats = stats;
                stats = NULL;
        }
-       spin_unlock_irqrestore(&sig->stats_lock, flags);
+       spin_unlock_irq(&tsk->sighand->siglock);
 
        if (stats)
                kmem_cache_free(taskstats_cache, stats);
@@ -59,7 +57,6 @@ static inline void taskstats_tgid_free(struct signal_struct *sig)
 extern void taskstats_exit_alloc(struct taskstats **, unsigned int *);
 extern void taskstats_exit_send(struct task_struct *, struct taskstats *, int, unsigned int);
 extern void taskstats_init_early(void);
-extern void taskstats_tgid_alloc(struct signal_struct *);
 #else
 static inline void taskstats_exit_alloc(struct taskstats **ptidstats, unsigned int *mycpu)
 {}
@@ -71,7 +68,7 @@ static inline void taskstats_exit_send(struct task_struct *tsk,
 {}
 static inline void taskstats_tgid_init(struct signal_struct *sig)
 {}
-static inline void taskstats_tgid_alloc(struct signal_struct *sig)
+static inline void taskstats_tgid_alloc(struct task_struct *tsk)
 {}
 static inline void taskstats_tgid_free(struct signal_struct *sig)
 {}