|
|
@@ -53,9 +53,12 @@
|
|
|
static DEFINE_MUTEX(mce_chrdev_read_mutex);
|
|
|
|
|
|
#define rcu_dereference_check_mce(p) \
|
|
|
- rcu_dereference_index_check((p), \
|
|
|
- rcu_read_lock_sched_held() || \
|
|
|
- lockdep_is_held(&mce_chrdev_read_mutex))
|
|
|
+({ \
|
|
|
+ rcu_lockdep_assert(rcu_read_lock_sched_held() || \
|
|
|
+ lockdep_is_held(&mce_chrdev_read_mutex), \
|
|
|
+ "suspicious rcu_dereference_check_mce() usage"); \
|
|
|
+ smp_load_acquire(&(p)); \
|
|
|
+})
|
|
|
|
|
|
#define CREATE_TRACE_POINTS
|
|
|
#include <trace/events/mce.h>
|
|
|
@@ -1884,7 +1887,7 @@ out:
|
|
|
static unsigned int mce_chrdev_poll(struct file *file, poll_table *wait)
|
|
|
{
|
|
|
poll_wait(file, &mce_chrdev_wait, wait);
|
|
|
- if (rcu_access_index(mcelog.next))
|
|
|
+ if (READ_ONCE(mcelog.next))
|
|
|
return POLLIN | POLLRDNORM;
|
|
|
if (!mce_apei_read_done && apei_check_mce())
|
|
|
return POLLIN | POLLRDNORM;
|