diff options
| author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-10-29 01:29:17 +0200 |
|---|---|---|
| committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2016-10-29 01:29:17 +0200 |
| commit | 8b2ada27dc1045e8191673bf769a1136ce8a0127 (patch) | |
| tree | df2fe577fb2f01c477e7e217cec9fd47c6ce812b /include/linux/list.h | |
| parent | 2f1d407adab026b34a105ed27b1d4d7e910c4448 (diff) | |
| parent | 1adb469b9b76276d7e5ea36a20a24c47d6618a0b (diff) | |
Merge branches 'pm-cpufreq-fixes' and 'pm-sleep-fixes'
* pm-cpufreq-fixes:
cpufreq: intel_pstate: Always set max P-state in performance mode
cpufreq: intel_pstate: Set P-state upfront in performance mode
* pm-sleep-fixes:
PM / suspend: Fix missing KERN_CONT for suspend message
Diffstat (limited to 'include/linux/list.h')
| -rw-r--r-- | include/linux/list.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/include/linux/list.h b/include/linux/list.h index 5183138aa932..5809e9a2de5b 100644 --- a/include/linux/list.h +++ b/include/linux/list.h @@ -381,8 +381,11 @@ static inline void list_splice_tail_init(struct list_head *list, * * Note that if the list is empty, it returns NULL. */ -#define list_first_entry_or_null(ptr, type, member) \ - (!list_empty(ptr) ? list_first_entry(ptr, type, member) : NULL) +#define list_first_entry_or_null(ptr, type, member) ({ \ + struct list_head *head__ = (ptr); \ + struct list_head *pos__ = READ_ONCE(head__->next); \ + pos__ != head__ ? list_entry(pos__, type, member) : NULL; \ +}) /** * list_next_entry - get the next element in list |
