Hi Simon, On Thu, Jul 11, 2019 at 3:28 PM Simon Horman <horms@xxxxxxxxxxxx> wrote: > > On Thu, Jul 11, 2019 at 01:24:28AM +0530, Bhupesh Sharma wrote: > > This patch adds 'is_zlib_file()' helper function which can be > > used to quickly determine with the passed kernel image is a zlib > > compressed kernel image. > > > > This is specifically useful for arm64 zImage (or Image.gz) support, > > which is introduced by later patches in this patchset. > > > > Signed-off-by: Bhupesh Sharma <bhsharma@xxxxxxxxxx> > > --- > > kexec/kexec-zlib.h | 1 + > > kexec/zlib.c | 32 ++++++++++++++++++++++++++++++++ > > 2 files changed, 33 insertions(+) > > > > diff --git a/kexec/kexec-zlib.h b/kexec/kexec-zlib.h > > index 43c107bf4a72..16300f294759 100644 > > --- a/kexec/kexec-zlib.h > > +++ b/kexec/kexec-zlib.h > > @@ -6,5 +6,6 @@ > > > > #include "config.h" > > > > +int is_zlib_file(const char *filename, off_t *r_size); > > char *zlib_decompress_file(const char *filename, off_t *r_size); > > #endif /* __KEXEC_ZLIB_H */ > > diff --git a/kexec/zlib.c b/kexec/zlib.c > > index 95b608059d41..34d5ca566769 100644 > > --- a/kexec/zlib.c > > +++ b/kexec/zlib.c > > @@ -23,6 +23,32 @@ static void _gzerror(gzFile fp, int *errnum, const char **errmsg) > > } > > } > > > > +int is_zlib_file(const char *filename, off_t *r_size) > > +{ > > + gzFile fp; > > + int errnum; > > + const char *msg; > > + > > + if (!filename) > > + goto out; > > + > > + fp = gzopen(filename, "rb"); > > Does fp need to be closed somewhere to avoid a leak? Right. Will fix this in v2. v2 will be soon on its way. Thanks, Bhupesh > > + if (fp == 0) { > > + _gzerror(fp, &errnum, &msg); > > + dbgprintf("Cannot open `%s': %s\n", filename, msg); > > + goto out; > > + } > > + > > + if (gzdirect(fp)) > > + /* It's not in gzip format */ > > + goto out; > > + > > + /* It's in gzip format */ > > + return 1; > > +out: > > + return 0; > > +} > > + > > char *zlib_decompress_file(const char *filename, off_t *r_size) > > { > > gzFile fp; > > @@ -84,6 +110,12 @@ fail: > > return buf; > > } > > #else > > + > > +int is_zlib_file(const char *filename, off_t *r_size) > > +{ > > + return 0; > > +} > > + > > char *zlib_decompress_file(const char *UNUSED(filename), off_t *UNUSED(r_size)) > > { > > return NULL; > > -- > > 2.7.4 > > _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec