Fix signal handling when io-thread is disabled
Changes since v1: - take pthread_sigmask() out of the ifdef as it is now common to both parts. This fix effectively blocks, in the main thread, the signals handled by signalfd or the compatibility signal thread. This way, such signals are received synchronously in the main thread through sigfd_handler() instead of triggering the signal handler directly, asynchronously. Signed-off-by: Alexandre Raymond <cerbere@gmail.com> Acked-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
		
							parent
							
								
									107a47cc2d
								
							
						
					
					
						commit
						5664aed99a
					
				
							
								
								
									
										2
									
								
								cpus.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								cpus.c
									
									
									
									
									
								
							@ -401,7 +401,6 @@ static int qemu_signal_init(void)
 | 
			
		||||
    sigaddset(&set, SIGALRM);
 | 
			
		||||
    sigaddset(&set, SIG_IPI);
 | 
			
		||||
    sigaddset(&set, SIGBUS);
 | 
			
		||||
    pthread_sigmask(SIG_BLOCK, &set, NULL);
 | 
			
		||||
#else
 | 
			
		||||
    sigemptyset(&set);
 | 
			
		||||
    sigaddset(&set, SIGBUS);
 | 
			
		||||
@ -414,6 +413,7 @@ static int qemu_signal_init(void)
 | 
			
		||||
        sigaddset(&set, SIGALRM);
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
    pthread_sigmask(SIG_BLOCK, &set, NULL);
 | 
			
		||||
 | 
			
		||||
    sigfd = qemu_signalfd(&set);
 | 
			
		||||
    if (sigfd == -1) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user