Date: Thu, 07 Jan 2021 09:25:28 +0000 From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 252488] bsdtar fails to work with 128k blocksize Message-ID: <bug-252488-227@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D252488 Bug ID: 252488 Summary: bsdtar fails to work with 128k blocksize Product: Base System Version: 11.4-STABLE Hardware: Any OS: Any Status: New Severity: Affects Some People Priority: --- Component: bin Assignee: bugs@FreeBSD.org Reporter: mail@fbsd2.e4m.org Prerequisites: tape written with 128k block size, mt blocksize 131072 bsdtar -tf /dev/sa0 -b 256 gives sa0: request ptr 0x2888ed80 is not on a page boundary; cannot split request bsdtar: Error opening archive: Error reading '/dev/sa0' This seems to be an alignment problem. The problem goes away after aligning the buffer in archive_read_open_filename.c: --- archive_read_open_filename.c.ORI 2020-03-13 08:22:53.000000000 +0100 +++ archive_read_open_filename.c 2021-01-06 10:37:34.176333000 +0100 @@ -359,12 +359,17 @@ new_block_size *=3D 2; mine->block_size =3D new_block_size; } +#if 0 buffer =3D malloc(mine->block_size); +#else + buffer =3D malloc(mine->block_size + 4096); +#endif if (buffer =3D=3D NULL) { archive_set_error(a, ENOMEM, "No memory"); goto fail; } mine->buffer =3D buffer; + mine->buffer =3D (void*)(((u_int32_t)buffer + 4096) & ~4095); mine->fd =3D fd; /* Remember mode so close can decide whether to flush. */ mine->st_mode =3D st.st_mode; This is NO patch to fix the issue -- it's just to show the origin of the problem . A proper patch will probably use PAGESIZE and distinguish between malloc start and aligned buffer (so it can bee free()ed). --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-252488-227>