| From 21b81716c6bff24cda52dc75588455f879ddbfe9 Mon Sep 17 00:00:00 2001 |
| From: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com> |
| Date: Thu, 25 Feb 2016 13:54:20 -0300 |
| Subject: ipr: Fix regression when loading firmware |
| |
| From: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com> |
| |
| commit 21b81716c6bff24cda52dc75588455f879ddbfe9 upstream. |
| |
| Commit d63c7dd5bcb9 ("ipr: Fix out-of-bounds null overwrite") removed |
| the end of line handling when storing the update_fw sysfs attribute. |
| This changed the userpace API because it started refusing writes |
| terminated by a line feed, which broke the update tools we already have. |
| |
| This patch re-adds that handling, so both a write terminated by a line |
| feed or not can make it through with the update. |
| |
| Fixes: d63c7dd5bcb9 ("ipr: Fix out-of-bounds null overwrite") |
| Signed-off-by: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com> |
| Cc: Insu Yun <wuninsu@gmail.com> |
| Acked-by: Brian King <brking@linux.vnet.ibm.com> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Cc: Ben Hutchings <ben@decadent.org.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/scsi/ipr.c | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| --- a/drivers/scsi/ipr.c |
| +++ b/drivers/scsi/ipr.c |
| @@ -4003,6 +4003,7 @@ static ssize_t ipr_store_update_fw(struc |
| struct ipr_sglist *sglist; |
| char fname[100]; |
| char *src; |
| + char *endline; |
| int result, dnld_size; |
| |
| if (!capable(CAP_SYS_ADMIN)) |
| @@ -4010,6 +4011,10 @@ static ssize_t ipr_store_update_fw(struc |
| |
| snprintf(fname, sizeof(fname), "%s", buf); |
| |
| + endline = strchr(fname, '\n'); |
| + if (endline) |
| + *endline = '\0'; |
| + |
| if (request_firmware(&fw_entry, fname, &ioa_cfg->pdev->dev)) { |
| dev_err(&ioa_cfg->pdev->dev, "Firmware file %s not found\n", fname); |
| return -EIO; |