On Tue, Jul 21, 2020 at 02:43:07PM -0700, Scott Branden wrote: > On 2020-07-17 10:43 a.m., Kees Cook wrote: > > In preparation for refactoring kernel_read_file*(), remove the redundant > > "size" argument which is not needed: it can be included in the return > > code, with callers adjusted. (VFS reads already cannot be larger than > > INT_MAX.) > > > > Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> > > --- > > drivers/base/firmware_loader/main.c | 8 ++++---- > > fs/kernel_read_file.c | 20 +++++++++----------- > > include/linux/kernel_read_file.h | 8 ++++---- > > kernel/kexec_file.c | 13 ++++++------- > > kernel/module.c | 7 +++---- > > security/integrity/digsig.c | 5 +++-- > > security/integrity/ima/ima_fs.c | 5 +++-- > > 7 files changed, 32 insertions(+), 34 deletions(-) > > > > diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c > > index d4a413ea48ce..ea419c7d3d34 100644 > > --- a/drivers/base/firmware_loader/main.c > > +++ b/drivers/base/firmware_loader/main.c > > @@ -462,7 +462,7 @@ fw_get_filesystem_firmware(struct device *device, struct fw_priv *fw_priv, > > size_t in_size, > > const void *in_buffer)) > > { > > - loff_t size; > > + size_t size; > > int i, len; > > int rc = -ENOENT; > > char *path; > > @@ -494,10 +494,9 @@ fw_get_filesystem_firmware(struct device *device, struct fw_priv *fw_priv, > > fw_priv->size = 0; > > /* load firmware files from the mount namespace of init */ > > - rc = kernel_read_file_from_path_initns(path, &buffer, > > - &size, msize, > > + rc = kernel_read_file_from_path_initns(path, &buffer, msize, > > READING_FIRMWARE); > > - if (rc) { > > + if (rc < 0) { > > if (rc != -ENOENT) > > dev_warn(device, "loading %s failed with error %d\n", > > path, rc); > > @@ -506,6 +505,7 @@ fw_get_filesystem_firmware(struct device *device, struct fw_priv *fw_priv, > > path); > > continue; > > } > > + size = rc; > Change fails to return 0. Need rc = 0; here. Oh nice; good catch! I'll fix this. -- Kees Cook