From: Ben Hutchings Date: Sat, 28 Dec 2013 15:53:59 +0000 (+0100) Subject: firmware_class: Fix the file size check X-Git-Tag: firefly_0821_release~176^2~4627^2~34 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=08da2012e0bb0f3f1422cce3f76c36a90da366b5;p=firefly-linux-kernel-4.4.55.git firmware_class: Fix the file size check We expect to read firmware blobs with a single call to kernel_read(), which returns int. Therefore the size must be within the range of int, not long. Signed-off-by: Ben Hutchings Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 54592e66551f..8a97ddfa6122 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -280,21 +280,21 @@ module_param_string(path, fw_path_para, sizeof(fw_path_para), 0644); MODULE_PARM_DESC(path, "customized firmware image search path with a higher priority than default path"); /* Don't inline this: 'struct kstat' is biggish */ -static noinline_for_stack long fw_file_size(struct file *file) +static noinline_for_stack int fw_file_size(struct file *file) { struct kstat st; if (vfs_getattr(&file->f_path, &st)) return -1; if (!S_ISREG(st.mode)) return -1; - if (st.size != (long)st.size) + if (st.size != (int)st.size) return -1; return st.size; } static int fw_read_file_contents(struct file *file, struct firmware_buf *fw_buf) { - long size; + int size; char *buf; int rc;