Message ID | 20220928122959.16679-5-cfontana@suse.de |
---|---|
State | New |
Headers | show |
Series | improve error handling for module load | expand |
On 9/28/22 05:29, Claudio Fontana wrote: > From: Kevin Wolf <kwolf@redhat.com> > > Signed-off-by: Claudio Fontana <cfontana@suse.de> > --- > block/dmg.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) If it's from Kevin, it should have his s-o-b as well. With that, Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ > > diff --git a/block/dmg.c b/block/dmg.c > index 837f18aa20..96f8c2d14f 100644 > --- a/block/dmg.c > +++ b/block/dmg.c > @@ -254,6 +254,25 @@ static int dmg_read_mish_block(BDRVDMGState *s, DmgHeaderState *ds, > for (i = s->n_chunks; i < s->n_chunks + chunk_count; i++) { > s->types[i] = buff_read_uint32(buffer, offset); > if (!dmg_is_known_block_type(s->types[i])) { > + switch (s->types[i]) { > + case UDBZ: > + warn_report_once("dmg-bzip2 module is missing, accessing bzip2 " > + "compressed blocks will result in I/O errors"); > + break; > + case ULFO: > + warn_report_once("dmg-lzfse module is missing, accessing lzfse " > + "compressed blocks will result in I/O errors"); > + break; > + case UDCM: > + case UDLE: > + /* Comments and last entry can be ignored without problems */ > + break; > + default: > + warn_report_once("Image contains chunks of unknown type %x, " > + "accessing them will result in I/O errors", > + s->types[i]); > + break; > + } > chunk_count--; > i--; > offset += 40;
diff --git a/block/dmg.c b/block/dmg.c index 837f18aa20..96f8c2d14f 100644 --- a/block/dmg.c +++ b/block/dmg.c @@ -254,6 +254,25 @@ static int dmg_read_mish_block(BDRVDMGState *s, DmgHeaderState *ds, for (i = s->n_chunks; i < s->n_chunks + chunk_count; i++) { s->types[i] = buff_read_uint32(buffer, offset); if (!dmg_is_known_block_type(s->types[i])) { + switch (s->types[i]) { + case UDBZ: + warn_report_once("dmg-bzip2 module is missing, accessing bzip2 " + "compressed blocks will result in I/O errors"); + break; + case ULFO: + warn_report_once("dmg-lzfse module is missing, accessing lzfse " + "compressed blocks will result in I/O errors"); + break; + case UDCM: + case UDLE: + /* Comments and last entry can be ignored without problems */ + break; + default: + warn_report_once("Image contains chunks of unknown type %x, " + "accessing them will result in I/O errors", + s->types[i]); + break; + } chunk_count--; i--; offset += 40;