[PATCH v3 2/3] sched: add macros to define bitops for task atomic flags

2014-09-23 Thread Zefan Li
This will simplify code when we add new flags.

v3:
- Kees pointed out that no_new_privs should never be cleared, so we
shouldn't define task_clear_no_new_privs(). we define 3 macros instead
of a single one.

v2:
- updated scripts/tags.sh, suggested by Peter.

Cc: Peter Zijlstra 
Cc: Ingo Molnar 
Cc: Miao Xie 
Cc: Kees Cook 
Cc: Tetsuo Handa 
Signed-off-by: Zefan Li 
---
 include/linux/sched.h | 21 -
 scripts/tags.sh   |  6 ++
 2 files changed, 18 insertions(+), 9 deletions(-)

diff --git a/include/linux/sched.h b/include/linux/sched.h
index 4557765..5630763 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -1959,15 +1959,18 @@ static inline void memalloc_noio_restore(unsigned int 
flags)
 /* Per-process atomic flags. */
 #define PFA_NO_NEW_PRIVS 0 /* May not gain new privileges. */
 
-static inline bool task_no_new_privs(struct task_struct *p)
-{
-   return test_bit(PFA_NO_NEW_PRIVS, &p->atomic_flags);
-}
-
-static inline void task_set_no_new_privs(struct task_struct *p)
-{
-   set_bit(PFA_NO_NEW_PRIVS, &p->atomic_flags);
-}
+#define TASK_PFA_TEST(name, func)  \
+   static inline bool task_##func(struct task_struct *p)   \
+   { return test_bit(PFA_##name, &p->atomic_flags); }
+#define TASK_PFA_SET(name, func)   \
+   static inline void task_set_##func(struct task_struct *p)   \
+   { set_bit(PFA_##name, &p->atomic_flags); }
+#define TASK_PFA_CLEAR(name, func) \
+   static inline void task_clear_##func(struct task_struct *p) \
+   { clear_bit(PFA_##name, &p->atomic_flags); }
+
+TASK_PFA_TEST(NO_NEW_PRIVS, no_new_privs)
+TASK_PFA_SET(NO_NEW_PRIVS, no_new_privs)
 
 /*
  * task->jobctl flags
diff --git a/scripts/tags.sh b/scripts/tags.sh
index cbfd269..293828b 100755
--- a/scripts/tags.sh
+++ b/scripts/tags.sh
@@ -197,6 +197,9 @@ exuberant()
--regex-c++='/SETPCGFLAG\(([^,)]*).*/SetPageCgroup\1/'  \
--regex-c++='/CLEARPCGFLAG\(([^,)]*).*/ClearPageCgroup\1/'  \
--regex-c++='/TESTCLEARPCGFLAG\(([^,)]*).*/TestClearPageCgroup\1/' \
+   --regex-c++='/TASK_PFA_TEST\([^,]*,\s*([^)]*)\)/task_\1/'   \
+   --regex-c++='/TASK_PFA_SET\([^,]*,\s*([^)]*)\)/task_set_\1/'\
+   --regex-c++='/TASK_PFA_CLEAR\([^,]*,\s*([^)]*)\)/task_clear_\1/'\
--regex-c='/PCI_OP_READ\((\w*).*[1-4]\)/pci_bus_read_config_\1/' \
--regex-c='/PCI_OP_WRITE\((\w*).*[1-4]\)/pci_bus_write_config_\1/' \
--regex-c='/DEFINE_(MUTEX|SEMAPHORE|SPINLOCK)\((\w*)/\2/v/' \
@@ -260,6 +263,9 @@ emacs()
--regex='/SETPCGFLAG\(([^,)]*).*/SetPageCgroup\1/'  \
--regex='/CLEARPCGFLAG\(([^,)]*).*/ClearPageCgroup\1/'  \
--regex='/TESTCLEARPCGFLAG\(([^,)]*).*/TestClearPageCgroup\1/' \
+   --regex='/TASK_PFA_TEST\([^,]*,\s*([^)]*)\)/task_\1/'   \
+   --regex='/TASK_PFA_SET\([^,]*,\s*([^)]*)\)/task_set_\1/'\
+   --regex='/TASK_PFA_CLEAR\([^,]*,\s*([^)]*)\)/task_clear_\1/'\
--regex='/_PE(\([^,)]*\).*/PEVENT_ERRNO__\1/'   \
--regex='/PCI_OP_READ(\([a-z]*[a-z]\).*[1-4])/pci_bus_read_config_\1/' \

--regex='/PCI_OP_WRITE(\([a-z]*[a-z]\).*[1-4])/pci_bus_write_config_\1/'\
-- 
1.8.0.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 2/3] sched: add macros to define bitops for task atomic flags

2014-09-23 Thread Peter Zijlstra
On Tue, Sep 23, 2014 at 03:44:59PM +0800, Zefan Li wrote:
> This will simplify code when we add new flags.
> 
> v3:
> - Kees pointed out that no_new_privs should never be cleared, so we
> shouldn't define task_clear_no_new_privs(). we define 3 macros instead
> of a single one.
> 
> v2:
> - updated scripts/tags.sh, suggested by Peter.
> 
> Cc: Peter Zijlstra 
> Cc: Ingo Molnar 
> Cc: Miao Xie 
> Cc: Kees Cook 
> Cc: Tetsuo Handa 
> Signed-off-by: Zefan Li 

Acked-by: Peter Zijlstra (Intel) 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v3 2/3] sched: add macros to define bitops for task atomic flags

2014-09-23 Thread Kees Cook
On Tue, Sep 23, 2014 at 3:01 AM, Peter Zijlstra  wrote:
> On Tue, Sep 23, 2014 at 03:44:59PM +0800, Zefan Li wrote:
>> This will simplify code when we add new flags.
>>
>> v3:
>> - Kees pointed out that no_new_privs should never be cleared, so we
>> shouldn't define task_clear_no_new_privs(). we define 3 macros instead
>> of a single one.

Thanks! This looks good to me.

>>
>> v2:
>> - updated scripts/tags.sh, suggested by Peter.
>>
>> Cc: Peter Zijlstra 
>> Cc: Ingo Molnar 
>> Cc: Miao Xie 
>> Cc: Kees Cook 
>> Cc: Tetsuo Handa 
>> Signed-off-by: Zefan Li 
>
> Acked-by: Peter Zijlstra (Intel) 

Acked-by: Kees Cook 

-Kees

-- 
Kees Cook
Chrome OS Security
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/