mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	ACPI: fix single linked list manipulation
Fix single linked list manipulation for sub_driver. If the remving entry is not on the head of the sub_driver list, it goes into infinate loop. Though that infinite loop doesn't happen. Because the only user of acpi_pci_register_dirver() is acpiphp. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
		
							parent
							
								
									9185cfa925
								
							
						
					
					
						commit
						f10bb2544b
					
				
					 1 changed files with 5 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -98,11 +98,12 @@ void acpi_pci_unregister_driver(struct acpi_pci_driver *driver)
 | 
			
		|||
 | 
			
		||||
	struct acpi_pci_driver **pptr = &sub_driver;
 | 
			
		||||
	while (*pptr) {
 | 
			
		||||
		if (*pptr != driver)
 | 
			
		||||
			continue;
 | 
			
		||||
		*pptr = (*pptr)->next;
 | 
			
		||||
		if (*pptr == driver)
 | 
			
		||||
			break;
 | 
			
		||||
		pptr = &(*pptr)->next;
 | 
			
		||||
	}
 | 
			
		||||
	BUG_ON(!*pptr);
 | 
			
		||||
	*pptr = (*pptr)->next;
 | 
			
		||||
 | 
			
		||||
	if (!driver->remove)
 | 
			
		||||
		return;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue