diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2009-07-25 10:18:34 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-09-13 05:12:05 -0400 |
commit | 2d21a29fb62f142b8a62496700d8d82a6a8fd783 (patch) | |
tree | 78d83ed47a72b1e31ecadb3f77e91f865b407b48 /drivers/oprofile | |
parent | 6b2c1800f1d3a608af952cfbd57f8f1a71c5d9b4 (diff) |
locking, oprofile: Annotate oprofilefs lock as raw
The oprofilefs_lock can be taken in atomic context (in profiling
interrupts) and therefore cannot cannot be preempted on -rt -
annotate it.
In mainline this change documents the low level nature of
the lock - otherwise there's no functional difference. Lockdep
and Sparse checking will work as usual.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers/oprofile')
-rw-r--r-- | drivers/oprofile/event_buffer.c | 4 | ||||
-rw-r--r-- | drivers/oprofile/oprofile_perf.c | 4 | ||||
-rw-r--r-- | drivers/oprofile/oprofilefs.c | 6 |
3 files changed, 7 insertions, 7 deletions
diff --git a/drivers/oprofile/event_buffer.c b/drivers/oprofile/event_buffer.c index dd87e86048be..c0cc4e7ff023 100644 --- a/drivers/oprofile/event_buffer.c +++ b/drivers/oprofile/event_buffer.c | |||
@@ -82,10 +82,10 @@ int alloc_event_buffer(void) | |||
82 | { | 82 | { |
83 | unsigned long flags; | 83 | unsigned long flags; |
84 | 84 | ||
85 | spin_lock_irqsave(&oprofilefs_lock, flags); | 85 | raw_spin_lock_irqsave(&oprofilefs_lock, flags); |
86 | buffer_size = oprofile_buffer_size; | 86 | buffer_size = oprofile_buffer_size; |
87 | buffer_watershed = oprofile_buffer_watershed; | 87 | buffer_watershed = oprofile_buffer_watershed; |
88 | spin_unlock_irqrestore(&oprofilefs_lock, flags); | 88 | raw_spin_unlock_irqrestore(&oprofilefs_lock, flags); |
89 | 89 | ||
90 | if (buffer_watershed >= buffer_size) | 90 | if (buffer_watershed >= buffer_size) |
91 | return -EINVAL; | 91 | return -EINVAL; |
diff --git a/drivers/oprofile/oprofile_perf.c b/drivers/oprofile/oprofile_perf.c index 94796f39bc47..da14432806c6 100644 --- a/drivers/oprofile/oprofile_perf.c +++ b/drivers/oprofile/oprofile_perf.c | |||
@@ -160,9 +160,9 @@ static int oprofile_perf_create_files(struct super_block *sb, struct dentry *roo | |||
160 | 160 | ||
161 | static int oprofile_perf_setup(void) | 161 | static int oprofile_perf_setup(void) |
162 | { | 162 | { |
163 | spin_lock(&oprofilefs_lock); | 163 | raw_spin_lock(&oprofilefs_lock); |
164 | op_perf_setup(); | 164 | op_perf_setup(); |
165 | spin_unlock(&oprofilefs_lock); | 165 | raw_spin_unlock(&oprofilefs_lock); |
166 | return 0; | 166 | return 0; |
167 | } | 167 | } |
168 | 168 | ||
diff --git a/drivers/oprofile/oprofilefs.c b/drivers/oprofile/oprofilefs.c index e9ff6f7770be..d0de6cc2d7a5 100644 --- a/drivers/oprofile/oprofilefs.c +++ b/drivers/oprofile/oprofilefs.c | |||
@@ -21,7 +21,7 @@ | |||
21 | 21 | ||
22 | #define OPROFILEFS_MAGIC 0x6f70726f | 22 | #define OPROFILEFS_MAGIC 0x6f70726f |
23 | 23 | ||
24 | DEFINE_SPINLOCK(oprofilefs_lock); | 24 | DEFINE_RAW_SPINLOCK(oprofilefs_lock); |
25 | 25 | ||
26 | static struct inode *oprofilefs_get_inode(struct super_block *sb, int mode) | 26 | static struct inode *oprofilefs_get_inode(struct super_block *sb, int mode) |
27 | { | 27 | { |
@@ -76,9 +76,9 @@ int oprofilefs_ulong_from_user(unsigned long *val, char const __user *buf, size_ | |||
76 | if (copy_from_user(tmpbuf, buf, count)) | 76 | if (copy_from_user(tmpbuf, buf, count)) |
77 | return -EFAULT; | 77 | return -EFAULT; |
78 | 78 | ||
79 | spin_lock_irqsave(&oprofilefs_lock, flags); | 79 | raw_spin_lock_irqsave(&oprofilefs_lock, flags); |
80 | *val = simple_strtoul(tmpbuf, NULL, 0); | 80 | *val = simple_strtoul(tmpbuf, NULL, 0); |
81 | spin_unlock_irqrestore(&oprofilefs_lock, flags); | 81 | raw_spin_unlock_irqrestore(&oprofilefs_lock, flags); |
82 | return 0; | 82 | return 0; |
83 | } | 83 | } |
84 | 84 | ||