summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Sokolowski2017-06-10 01:00:26 +0200
committerDoug Ledford2017-06-27 22:58:13 +0200
commitbc5214ee29220251e5507882696ded5ca183b169 (patch)
tree87d98ab772df304aa9c27478a1e607e2df0088ae
parentIB/hfi1: Resolve kernel panics by reference counting receive contexts (diff)
downloadkernel-qcow2-linux-bc5214ee29220251e5507882696ded5ca183b169.tar.gz
kernel-qcow2-linux-bc5214ee29220251e5507882696ded5ca183b169.tar.xz
kernel-qcow2-linux-bc5214ee29220251e5507882696ded5ca183b169.zip
IB/hfi1: Handle missing magic values in config file
Driver does not check whether proper configuration file exist in EPROM, and treats empty partition as possible valid configuration, preventing fallback to default firmware. Change EPROM read function to treat missing magic number as read error. Reviewed-by: Jakub Byczkowski <jakub.byczkowski@intel.com> Signed-off-by: Jan Sokolowski <jan.sokolowski@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
-rw-r--r--drivers/infiniband/hw/hfi1/eprom.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/infiniband/hw/hfi1/eprom.c b/drivers/infiniband/hw/hfi1/eprom.c
index 26da124c88e2..d46b17107901 100644
--- a/drivers/infiniband/hw/hfi1/eprom.c
+++ b/drivers/infiniband/hw/hfi1/eprom.c
@@ -250,7 +250,6 @@ static int read_partition_platform_config(struct hfi1_devdata *dd, void **data,
{
void *buffer;
void *p;
- u32 length;
int ret;
buffer = kmalloc(P1_SIZE, GFP_KERNEL);
@@ -265,13 +264,13 @@ static int read_partition_platform_config(struct hfi1_devdata *dd, void **data,
/* scan for image magic that may trail the actual data */
p = strnstr(buffer, IMAGE_TRAIL_MAGIC, P1_SIZE);
- if (p)
- length = p - buffer;
- else
- length = P1_SIZE;
+ if (!p) {
+ kfree(buffer);
+ return -ENOENT;
+ }
*data = buffer;
- *size = length;
+ *size = p - buffer;
return 0;
}