Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 09 Dec 2013 09:27:37 +0100
From:      Paolo Pinto <paolo.pinto@netasq.com>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        nicolas dumont <nicolas.dumont@netasq.com>, freebsd-geom@freebsd.org
Subject:   Re: geom_uzip, panic: bio_length in mdstart_vnode()
Message-ID:  <52A57EF9.5050905@netasq.com>
In-Reply-To: <20131204162029.GV59496@kib.kiev.ua>
References:  <529F2748.2060900@netasq.com> <20131204162029.GV59496@kib.kiev.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a cryptographically signed message in MIME format.

--------------ms040509050209030501020602
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hi Konstantin,

Thanks for the workaround, it works for me; the assertion doesn't
trigger anymore.

On 12/04/2013 05:20 PM, Konstantin Belousov wrote:
> On Wed, Dec 04, 2013 at 01:59:52PM +0100, Paolo Pinto wrote:
>> Hi list!
>>
>> My kernel is compiled with option INVARIANTS and I get a reproducible
>> kernel panic when trying to read data from a GEOM based compressed
>> memory disk:
>>
>> Unread portion of the kernel message buffer:
>> panic: bio_length 140288
>> cpuid =3D 3
>> KDB: stack backtrace:
>> #0 0xffffffff80909726 at kdb_backtrace+0x66
>> #1 0xffffffff808d0fa8 at panic+0x1d8
>> #2 0xffffffff80595949 at mdstart_vnode+0x619
>=20
> The issue is that geom_uzip creates bios which are larger than MAXPHYS.=

>=20
> As a workaround, the following patch should be enough.  It only fires
> assert when md really uses pbuf, and since geom_uzip knows nothing
> about unmapped bio, the assertion must not trigger.
>=20
> diff --git a/sys/dev/md/md.c b/sys/dev/md/md.c
> index 8ae51d1..639677e 100644
> --- a/sys/dev/md/md.c
> +++ b/sys/dev/md/md.c
> @@ -746,12 +746,12 @@ mdstart_vnode(struct md_s *sc, struct bio *bp)
>  		return (error);
>  	}
> =20
> -	KASSERT(bp->bio_length <=3D MAXPHYS, ("bio_length %jd",
> -	    (uintmax_t)bp->bio_length));
>  	if ((bp->bio_flags & BIO_UNMAPPED) =3D=3D 0) {
>  		pb =3D NULL;
>  		aiov.iov_base =3D bp->bio_data;
>  	} else {
> +		KASSERT(bp->bio_length <=3D MAXPHYS, ("bio_length %jd",
> +		    (uintmax_t)bp->bio_length));
>  		pb =3D getpbuf(&md_vnode_pbuf_freecnt);
>  		pmap_qenter((vm_offset_t)pb->b_data, bp->bio_ma, bp->bio_ma_n);
>  		aiov.iov_base =3D (void *)((vm_offset_t)pb->b_data +
>=20

--=20
Paolo Pinto
R&D System Engineer

NETASQ - We secure IT


--------------ms040509050209030501020602
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature

MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIEnTCC
BJkwggOBoAMCAQICCnDGsUgWa/KQbFgwDQYJKoZIhvcNAQEFBQAwgZExCzAJBgNVBAYTAkZS
MQ0wCwYDVQQIEwROb3JkMRowGAYDVQQHExFWaWxsZW5ldXZlIGQnQXNjcTEuMCwGA1UEChMl
TkVUQVNRIC0gU2VjdXJlIEludGVybmV0IENvbm5lY3Rpdml0eTEnMCUGA1UECxMeTkVUQVNR
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDgxMzE0NDUzM1oXDTE0MDgxMzE0NDUz
M1owgc4xCzAJBgNVBAYTAkZSMQ0wCwYDVQQIEwROb3JkMRowGAYDVQQHExFWaWxsZW5ldXZl
IGQnQXNjcTEuMCwGA1UEChMlTkVUQVNRIC0gU2VjdXJlIEludGVybmV0IENvbm5lY3Rpdml0
eTEnMCUGA1UECxMeTkVUQVNRIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRQwEgYDVQQDEwtQ
YW9sbyBQSU5UTzElMCMGCSqGSIb3DQEJARYWcGFvbG8ucGludG9AbmV0YXNxLmNvbTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJfH5PlgbBG9sAsYW+VgBDysPWJOjsMJFaOq
iyCsBGgZUS6n0McSqWQMGaX+lGgiuVLkmxNxnLq8kZkARq4VbT25IaRdgbE0yPmFgYLd+9RK
RNUBfGD6S0++7pebb7CXDrplhofj8fL+oLjOU27MdG/ZkWqV6Y0kTH9XPPrMSdSNqUSAcy5O
iq7GwoTYwYlzhHILmXlVvjLZ1Ev9bJP053JomE1e7BuXjOETiPe1ymMvMNTCEjEXrmhpGmNV
GIpxOKbokkngGpECQpicXf+okbHFFyEiINaNFFYlpDGHl8XXADvcEyxC7SyrIxgwpSL95VXp
3WeBNzRB+XUlFXNLnSUCAwEAAaOBszCBsDAdBgNVHQ4EFgQUwDeJ4UTO9EshTMwEjMVUgs6Y
KcowHwYDVR0jBBgwFoAUJyrrHdlE2joXc2oJICDJJaj5f7IwCQYDVR0TBAIwADAOBgNVHQ8B
Af8EBAMCA+gwIQYDVR0RBBowGIEWcGFvbG8ucGludG9AbmV0YXNxLmNvbTARBglghkgBhvhC
AQEEBAMCBLAwHQYDVR0lBBYwFAYIKwYBBQUHAwQGCCsGAQUFBwMCMA0GCSqGSIb3DQEBBQUA
A4IBAQCEKfnRno7B0wOD+ZpUhK24j5uuvPTP4ObfFqbK/yRPJZOZpMr9OgJg9g+uhgL268EX
MqMmE5GbhDQq2uD70dS3f7irlssd9zjRQwdtH10c7J/NxTek3oMK+jDHFJMtaLwYyG/bfFPN
TV/z3LBh+XHIYzpgtE8LCz8q1LyPay6acw364LmQRlUNRjVy9VYPQ8aFTMIterRSuy5kUP3w
kga4WFan0uyLfGiTm5p21lyTExooMKFerEEdGdB/ctLfWbBcOaS8xTNzuhlwfINETBfqrhOQ
56ozRyAF6mElm0FFi4au/NPTX5sD/XrMITugeEub180NtKIP8ZeoQabp/j7ZMYIEATCCA/0C
AQEwgaAwgZExCzAJBgNVBAYTAkZSMQ0wCwYDVQQIEwROb3JkMRowGAYDVQQHExFWaWxsZW5l
dXZlIGQnQXNjcTEuMCwGA1UEChMlTkVUQVNRIC0gU2VjdXJlIEludGVybmV0IENvbm5lY3Rp
dml0eTEnMCUGA1UECxMeTkVUQVNRIENlcnRpZmljYXRpb24gQXV0aG9yaXR5AgpwxrFIFmvy
kGxYMAkGBSsOAwIaBQCgggI1MBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcN
AQkFMQ8XDTEzMTIwOTA4MjczN1owIwYJKoZIhvcNAQkEMRYEFKB9YI7Trr688WNcZ1zez9xc
fJ2KMGwGCSqGSIb3DQEJDzFfMF0wCwYJYIZIAWUDBAEqMAsGCWCGSAFlAwQBAjAKBggqhkiG
9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAwBwYFKw4DAgcwDQYIKoZIhvcN
AwICASgwgbEGCSsGAQQBgjcQBDGBozCBoDCBkTELMAkGA1UEBhMCRlIxDTALBgNVBAgTBE5v
cmQxGjAYBgNVBAcTEVZpbGxlbmV1dmUgZCdBc2NxMS4wLAYDVQQKEyVORVRBU1EgLSBTZWN1
cmUgSW50ZXJuZXQgQ29ubmVjdGl2aXR5MScwJQYDVQQLEx5ORVRBU1EgQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkCCnDGsUgWa/KQbFgwgbMGCyqGSIb3DQEJEAILMYGjoIGgMIGRMQswCQYD
VQQGEwJGUjENMAsGA1UECBMETm9yZDEaMBgGA1UEBxMRVmlsbGVuZXV2ZSBkJ0FzY3ExLjAs
BgNVBAoTJU5FVEFTUSAtIFNlY3VyZSBJbnRlcm5ldCBDb25uZWN0aXZpdHkxJzAlBgNVBAsT
Hk5FVEFTUSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQIKcMaxSBZr8pBsWDANBgkqhkiG9w0B
AQEFAASCAQBIMn69fX+0oFNqZfiz6yBqfE7nyrKiWqn6qotXbFMioEYbMD7I0lnvfs7K1tqX
Q9wznTa/l701RatU4B671uwT84RPzGdlsNCURfojbInT0CcHlvhbFORNAzGLik4brhufFz/E
7mlggTu8QZOGzFBxmUzNOrrIPUW45hZtJdYhE7pGNTPc1gcmO3Kn8kNf21Wqihmqgu+FuXLy
t0wfKKP7FHNkvRhez/RAflRLWiAGFILdv7+czLmESHNwJEKRMkMd61bpIzTp8sxxLY1c28pC
lHCHcUi2skjK2nI/Levhi6+XmBntfWDLUWwJPBmwG5RvCM67tnA5lHseuklu6QwgAAAAAAAA

--------------ms040509050209030501020602--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52A57EF9.5050905>