On Wed, Feb 3, 2016 at 11:06 AM, Mimi Zohar <zohar at linux.vnet.ibm.com> wrote: > From: David Howells <dhowells at redhat.com> > > We'll be folding in some more checks on fw_read_file_contents(), > this will make the success case easier to follow. > > Reviewed-by: Josh Boyer <jwboyer at fedoraproject.org> > Signed-off-by: David Howells <dhowells at redhat.com> > Signed-off-by: Luis R. Rodriguez <mcgrof at kernel.org> > Signed-off-by: Mimi Zohar <zohar at linux.vnet.ibm.com> > --- > drivers/base/firmware_class.c | 16 +++++++--------- > 1 file changed, 7 insertions(+), 9 deletions(-) > > diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c > index fb64814..c658cec 100644 > --- a/drivers/base/firmware_class.c > +++ b/drivers/base/firmware_class.c > @@ -361,20 +361,18 @@ static int fw_get_filesystem_firmware(struct device *device, > continue; > rc = fw_read_file_contents(file, buf); > fput(file); > - if (rc) > + if (rc == 0) { > + dev_dbg(device, "direct-loading %s\n", > + buf->fw_id); > + fw_finish_direct_load(device, buf); > + goto out; > + } else > dev_warn(device, "loading %s failed with error %d\n", > path, rc); > - else > - break; > } > +out: > __putname(path); > > - if (!rc) { > - dev_dbg(device, "direct-loading %s\n", > - buf->fw_id); > - fw_finish_direct_load(device, buf); > - } > - > return rc; > } Looking at this code, why does this use "break": len = snprintf(path, PATH_MAX, "%s/%s", fw_path[i], buf->fw_id); if (len >= PATH_MAX) { rc = -ENAMETOOLONG; break; } Shouldn't that emit a warning, set rc, and continue? Regardless, I think this is more readable. Adding an "out" target at the end of a for loop seems weird, given "break" existing. :) rc = fw_read_file_contents(file, buf); fput(file); - if (rc) + if (rc) { dev_warn(device, "loading %s failed with error %d\n", path, rc); + continue; + } + dev_dbg(device, "direct-loading %s\n", buf->fw_id); + fw_finish_direct_load(device, buf); - else - break; + break; } __putname(path); - - if (!rc) { - dev_dbg(device, "direct-loading %s\n", - buf->fw_id); - fw_finish_direct_load(device, buf); - } - return rc; } -- Kees Cook Chrome OS & Brillo Security