aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/oprofile
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2009-07-25 10:18:34 -0400
committerIngo Molnar <mingo@elte.hu>2011-09-13 05:12:05 -0400
commit2d21a29fb62f142b8a62496700d8d82a6a8fd783 (patch)
tree78d83ed47a72b1e31ecadb3f77e91f865b407b48 /drivers/oprofile
parent6b2c1800f1d3a608af952cfbd57f8f1a71c5d9b4 (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.c4
-rw-r--r--drivers/oprofile/oprofile_perf.c4
-rw-r--r--drivers/oprofile/oprofilefs.c6
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
161static int oprofile_perf_setup(void) 161static 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
24DEFINE_SPINLOCK(oprofilefs_lock); 24DEFINE_RAW_SPINLOCK(oprofilefs_lock);
25 25
26static struct inode *oprofilefs_get_inode(struct super_block *sb, int mode) 26static 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