History

Merge tag 'random_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random

Pull /dev/random bug fix from Ted Ts'o: "Fix a race on architectures with prioritized interrupts (such as m68k) which can causes crashes in drivers/char/random.c:get_reg()" * tag 'random_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/random: fix race in drivers/char/random.c:get_reg()

Linus Torvalds committed 9 years ago

Commit 5a4829b2 parents f219764 9dfa7bb1 file · +5 −1Browse files

Unified · Split

drivers/char/random.c+5−1
@@ -1097,12 +1097,16 @@ static void add_interrupt_bench(cycles_t start) · 1096 unmodified lines
10971097 static __u32 get_reg(struct fast_pool *f, struct pt_regs *regs)
10981098 {
10991099 __u32 *ptr = (__u32 *) regs;
1100+ unsigned long flags;
11001101
11011102 if (regs == NULL)
11021103 return 0;
1104+ local_irq_save(flags);
11031105 if (f->reg_idx >= sizeof(struct pt_regs) / sizeof(__u32))
11041106 f->reg_idx = 0;
1105− return *(ptr + f->reg_idx++);
1107+ ptr += f->reg_idx++;
1108+ local_irq_restore(flags);
1109+ return *ptr;
11061110 }
11071111
11081112 void add_interrupt_randomness(int irq, int irq_flags)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t