aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuis R. Rodriguez <mcgrof@kernel.org>2017-07-20 16:13:39 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-08-10 16:58:41 -0400
commit76098b36b5db1a509e5af94128b08f950692c7f8 (patch)
treed66801f5a1e762628a7732f34af4eb955732d99f
parent0d1f417eee8ad0687afb90eab282614eecce1a13 (diff)
firmware: send -EINTR on signal abort on fallback mechanism
Right now we send -EAGAIN to a syfs write which got interrupted. Userspace can't tell what happened though, send -EINTR if we were killed due to a signal so userspace can tell things apart. This is only applicable to the fallback mechanism. Reported-by: Martin Fuzzey <mfuzzey@parkeon.com> Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/base/firmware_class.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index b9f907eedbf7..ac7e32fac8fc 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -1089,9 +1089,12 @@ static int _request_firmware_load(struct firmware_priv *fw_priv,
1089 mutex_unlock(&fw_lock); 1089 mutex_unlock(&fw_lock);
1090 } 1090 }
1091 1091
1092 if (fw_state_is_aborted(&buf->fw_st)) 1092 if (fw_state_is_aborted(&buf->fw_st)) {
1093 retval = -EAGAIN; 1093 if (retval == -ERESTARTSYS)
1094 else if (buf->is_paged_buf && !buf->data) 1094 retval = -EINTR;
1095 else
1096 retval = -EAGAIN;
1097 } else if (buf->is_paged_buf && !buf->data)
1095 retval = -ENOMEM; 1098 retval = -ENOMEM;
1096 1099
1097 device_del(f_dev); 1100 device_del(f_dev);