[PATCH] drivers/scsi/dpt_i2o.c: fix a NULL pointer dereference

The Coverity checker spotted this obvious NULL pointer dereference.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Acked-by: Mark Salyzyn <mark_salyzyn@adaptec.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Adrian Bunk and committed by Linus Torvalds 458af543 2012a116

+5 -4
+5 -4
drivers/scsi/dpt_i2o.c
··· 816 816 static void adpt_i2o_sys_shutdown(void) 817 817 { 818 818 adpt_hba *pHba, *pNext; 819 - struct adpt_i2o_post_wait_data *p1, *p2; 819 + struct adpt_i2o_post_wait_data *p1, *old; 820 820 821 821 printk(KERN_INFO"Shutting down Adaptec I2O controllers.\n"); 822 822 printk(KERN_INFO" This could take a few minutes if there are many devices attached\n"); ··· 830 830 } 831 831 832 832 /* Remove any timedout entries from the wait queue. */ 833 - p2 = NULL; 834 833 // spin_lock_irqsave(&adpt_post_wait_lock, flags); 835 834 /* Nothing should be outstanding at this point so just 836 835 * free them 837 836 */ 838 - for(p1 = adpt_post_wait_queue; p1; p2 = p1, p1 = p2->next) { 839 - kfree(p1); 837 + for(p1 = adpt_post_wait_queue; p1;) { 838 + old = p1; 839 + p1 = p1->next; 840 + kfree(old); 840 841 } 841 842 // spin_unlock_irqrestore(&adpt_post_wait_lock, flags); 842 843 adpt_post_wait_queue = NULL;