public inbox for kernel-janitors@vger.kernel.org
 help / color / mirror / Atom feed
* [patch] x86, microcode, AMD: use after free in free_cache()
@ 2012-09-05 12:30 Dan Carpenter
  2012-09-05 13:20 ` Borislav Petkov
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Dan Carpenter @ 2012-09-05 12:30 UTC (permalink / raw)
  To: kernel-janitors

list_for_each_entry_reverse() dereferences the iterator, but we already
freed it.  I don't see a reason that this has to be done in reverse
order so I've changed it to use list_for_each_entry_safe().

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
---
This is only needed on linux-next.  Sorry, it turns out that I don't
have any AMD systems right now, so I have not tested this.

diff --git a/arch/x86/kernel/microcode_amd.c b/arch/x86/kernel/microcode_amd.c
index 5511216..7720ff5 100644
--- a/arch/x86/kernel/microcode_amd.c
+++ b/arch/x86/kernel/microcode_amd.c
@@ -150,9 +150,9 @@ static void update_cache(struct ucode_patch *new_patch)
 
 static void free_cache(void)
 {
-	struct ucode_patch *p;
+	struct ucode_patch *p, *tmp;
 
-	list_for_each_entry_reverse(p, &pcache, plist) {
+	list_for_each_entry_safe(p, tmp, &pcache, plist) {
 		__list_del(p->plist.prev, p->plist.next);
 		kfree(p->data);
 		kfree(p);

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2012-09-12 11:00 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-05 12:30 [patch] x86, microcode, AMD: use after free in free_cache() Dan Carpenter
2012-09-05 13:20 ` Borislav Petkov
2012-09-05 23:42 ` Dan Carpenter
2012-09-06 12:01 ` Borislav Petkov
2012-09-06 12:30 ` Dan Carpenter
2012-09-06 13:06 ` Borislav Petkov
2012-09-06 14:04 ` Dan Carpenter
2012-09-06 16:16 ` Borislav Petkov
2012-09-12 11:00 ` Borislav Petkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox