linux-user/syscall.c: Don't warn about unimplemented get_robust_list
The nature of the kernel ABI for the get_robust_list and set_robust_list syscalls means we cannot implement them in QEMU. Make get_robust_list silently return ENOSYS rather than using the default "print message and then fail ENOSYS" code path, in the same way we already do for set_robust_list, and add a comment documenting why we do this. This silences warnings which were being produced for emulating even trivial programs like 'ls' in x86-64-on-x86-64. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
		
							parent
							
								
									a94b4987e2
								
							
						
					
					
						commit
						e9a970a831
					
				@ -8631,6 +8631,19 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#ifdef TARGET_NR_set_robust_list
 | 
					#ifdef TARGET_NR_set_robust_list
 | 
				
			||||||
    case TARGET_NR_set_robust_list:
 | 
					    case TARGET_NR_set_robust_list:
 | 
				
			||||||
 | 
					    case TARGET_NR_get_robust_list:
 | 
				
			||||||
 | 
					        /* The ABI for supporting robust futexes has userspace pass
 | 
				
			||||||
 | 
					         * the kernel a pointer to a linked list which is updated by
 | 
				
			||||||
 | 
					         * userspace after the syscall; the list is walked by the kernel
 | 
				
			||||||
 | 
					         * when the thread exits. Since the linked list in QEMU guest
 | 
				
			||||||
 | 
					         * memory isn't a valid linked list for the host and we have
 | 
				
			||||||
 | 
					         * no way to reliably intercept the thread-death event, we can't
 | 
				
			||||||
 | 
					         * support these. Silently return ENOSYS so that guest userspace
 | 
				
			||||||
 | 
					         * falls back to a non-robust futex implementation (which should
 | 
				
			||||||
 | 
					         * be OK except in the corner case of the guest crashing while
 | 
				
			||||||
 | 
					         * holding a mutex that is shared with another process via
 | 
				
			||||||
 | 
					         * shared memory).
 | 
				
			||||||
 | 
					         */
 | 
				
			||||||
        goto unimplemented_nowarn;
 | 
					        goto unimplemented_nowarn;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user