linux-user: Fix exit syscall with QOM CPU
For QOM'ified CPUs we cannot g_free() CPUArchState, we must object_delete() the object it is embedded into. Fixes LP#982321 (invalid free() while executing pacman with qemu-arm). Reported-by: Serge Schneider <serge@xecdesign.com> Reported-by: Russell Keith Davis <russell@russelldavis.org> Signed-off-by: Andreas Färber <afaerber@suse.de> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Tested-by: Serge Schneider <serge@xecdesign.com> Tested-by: Russell Keith Davis <russell@russelldavis.org> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
		
							parent
							
								
									da12872a09
								
							
						
					
					
						commit
						11ea409052
					
				| 
						 | 
				
			
			@ -5045,7 +5045,11 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
 | 
			
		|||
                        NULL, NULL, 0);
 | 
			
		||||
          }
 | 
			
		||||
          thread_env = NULL;
 | 
			
		||||
#ifdef ENV_GET_CPU
 | 
			
		||||
          object_delete(OBJECT(ENV_GET_CPU(cpu_env)));
 | 
			
		||||
#else
 | 
			
		||||
          g_free(cpu_env);
 | 
			
		||||
#endif
 | 
			
		||||
          g_free(ts);
 | 
			
		||||
          pthread_exit(NULL);
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue