Skip to content

Commit

Permalink
oprofile: fix memory ordering
Browse files Browse the repository at this point in the history
Regular bitops don't work as locks on all architectures.

Also: can use non-atomic unlock as no concurrent stores to the word.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Robert Richter <robert.richter@amd.com>
  • Loading branch information
Nick Piggin authored and Robert Richter committed Oct 27, 2008
1 parent fa448d6 commit cae042a
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions drivers/oprofile/event_buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ static int event_buffer_open(struct inode *inode, struct file *file)
if (!capable(CAP_SYS_ADMIN))
return -EPERM;

if (test_and_set_bit(0, &buffer_opened))
if (test_and_set_bit_lock(0, &buffer_opened))
return -EBUSY;

/* Register as a user of dcookies
Expand All @@ -129,7 +129,7 @@ static int event_buffer_open(struct inode *inode, struct file *file)
fail:
dcookie_unregister(file->private_data);
out:
clear_bit(0, &buffer_opened);
__clear_bit_unlock(0, &buffer_opened);
return err;
}

Expand All @@ -141,7 +141,7 @@ static int event_buffer_release(struct inode *inode, struct file *file)
dcookie_unregister(file->private_data);
buffer_pos = 0;
atomic_set(&buffer_ready, 0);
clear_bit(0, &buffer_opened);
__clear_bit_unlock(0, &buffer_opened);
return 0;
}

Expand Down

0 comments on commit cae042a

Please sign in to comment.