mm, gup: return EINTR when gup is interrupted by fatal signals
Subsystems (2)
PATCH 1/1 mm, gup: return EINTR when gup is interrupted by fatal signals
From: Michal Hocko <[email protected]>
EINTR is the usual error code which other killable interfaces return. This is the case for the other fatal_signal_pending break out from the same function. Make the code consistent.
ERESTARTSYS is also quite confusing because the signal is fatal and so no handling will happen before returning to the userspace.
--- mm/gup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
mm/gup.c +1 -1
@@ -1088,7 +1088,7 @@ static long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,* potentially allocating memory. */ if (fatal_signal_pending (current)) { - ret = -ERESTARTSYS ; + ret = -EINTR ; goto out; }cond_resched ();
Signature · 1 line
2.25.1
Quoted 3 lines · Michal Hocko
ERESTARTSYS is also quite confusing because the signal is fatal and so no handling will happen before returning to the userspace.
Ack. Except I'd rephrase that as "no restart" rather than "no handling".
We do end up handling the fatal signal, it's just that the handling doesn't involve restarting, it just involves dying.
That said, I'll leave this to the usual channels, since it isn't exactly the same kind of urgent fix that I picked up directly..
Linus