Subject: RE: patch: handle shared/read-only ipv6+icmp6 mbuf storage
To: 'Manuel Bouyer' <tech-net@NetBSD.org>
From: Konstantin KABASSANOV <Konstantin.Kabassanov@lip6.fr>
List: tech-net
Date: 04/04/2006 22:36:21
This is a multi-part message in MIME format.

------=_NextPart_000_000E_01C65838.322A3E80
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

If this is the patch Dave talked about, my answer is no. I don't use it =
on
my soekris boxes...

> -----Message d'origine-----
> De=A0: tech-net-owner@NetBSD.org [mailto:tech-net-owner@NetBSD.org] De =
la
> part de Manuel Bouyer
> Envoy=E9=A0: mardi 4 avril 2006 21:29
> =C0=A0: tech-net@NetBSD.org
> Objet=A0: Re: patch: handle shared/read-only ipv6+icmp6 mbuf storage
>=20
> On Thu, Mar 30, 2006 at 02:37:03PM -0600, David Young wrote:
> > [...]
> > Index: ip6_input.c
> > =
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> > RCS file: /cvsroot/src/sys/netinet6/ip6_input.c,v
> > retrieving revision 1.83
> > diff -u -p -u -p -r1.83 ip6_input.c
> > --- ip6_input.c	5 Mar 2006 23:47:08 -0000	1.83
> > +++ ip6_input.c	30 Mar 2006 19:27:16 -0000
> > @@ -234,7 +234,7 @@ void
> >  ip6_input(m)
> >  	struct mbuf *m;
> >  {
> > -	struct ip6_hdr *ip6;
> > +	struct ip6_hdr *ip6, *tmp;
> >  	int off =3D sizeof(struct ip6_hdr), nest;
> >  	u_int32_t plen;
> >  	u_int32_t rtalert =3D ~0;
> > @@ -305,7 +305,27 @@ ip6_input(m)
> >  		}
> >  	}
> >
> > -	ip6 =3D mtod(m, struct ip6_hdr *);
> > +        /* If we will embed a scope identifier in either the source =
or
> > +         * destination address or both, then make them both =
writable.
> > +	 * We have to do this to avoid scribbling over read-only/shared
> > +	 * mbuf storage.
> > +	 *
> > +         * XXX It may be possible to do this nearer to the place
> > +         * XXX where the src & dst are rewritten, per Manuel =
Bouyer's
> > +         * XXX suggestion on tech-net.
> > +	 */
> > +	tmp =3D mtod(m, struct ip6_hdr *);
> > +	if (!(IN6_IS_SCOPE_EMBEDDABLE(&tmp->ip6_src) ||
> > +	      IN6_IS_SCOPE_EMBEDDABLE(&tmp->ip6_dst)))
> > +		ip6 =3D tmp;
> > +	else if (m_makewritable(&m, 0, sizeof(struct ip6_hdr),
> > +	    M_DONTWAIT) !=3D 0) {
> > +		struct ifnet *inifp =3D m->m_pkthdr.rcvif;
> > +		ip6stat.ip6s_toosmall++;	/* XXXDCY new stat */
> > +		in6_ifstat_inc(inifp, ifs6_in_hdrerr);	/* XXXDCY new stat
> */
> > +		goto bad;
>=20
> As I already said, I think you should move this check later in the =
code,
> when we're actually going to the mbuf (i.e. just before the call to
> in6_setscope). The packet may actually be dropped before reaching
> in6_setscope() and copying it in this case would be a waste of =
ressources.
>=20
> --
> Manuel Bouyer <bouyer@antioche.eu.org>
>      NetBSD: 26 ans d'experience feront toujours la difference
> --


------=_NextPart_000_000E_01C65838.322A3E80
Content-Type: application/x-pkcs7-signature;
	name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="smime.p7s"

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
BgkqhkiG9w0BAQUFADA0MQswCQYDVQQGEwJGUjENMAsGA1UEChMEQ05SUzEWMBQGA1UEAxMNQ05S
Uy1TdGFuZGFyZDAeFw0wNTA5MjgxMzU3NThaFw0wNjA5MjgxMzU3NThaMHwxCzAJBgNVBAYTAkZS
MQ0wCwYDVQQKEwRDTlJTMRAwDgYDVQQLEwdVTVI3NjA2MR4wHAYDVQQDExVLb25zdGFudGluIEth
YmFzc2Fub3YxLDAqBgkqhkiG9w0BCQEWHUtvbnN0YW50aW4uS2FiYXNzYW5vdkBsaXA2LmZyMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvLRF4K/mD9QU3jqMasHVqQ9A0vzEDqebvfni
Ynd18B1V6/Id87piUbluisFpsdItRLvN7Z4GUUg9xNwyT/NjD9T1ZJ9HOOHQTfMAIRMqKJ89V6aW
WR/cuy4dtdkK6mNt6BWzKxpz2E1DCke0vHowBlFN4gYvfrGskgAR1m2jBI5/A3Shw2T0KoK2mheb
iH/iycltoAzRgd3Od2/uso1HO81dNbpYtHiv2IOKOp4+K8DJ/0i7jFUY7s+ZIwH/qq6hcZbsYoEn
plLdeo5KwdUJ3apUAEUV/rYmVTsyJ6DvlsbX1CKEj+GMySOMYqquXQmd/oyVZ2Evkt+ayRHIt31C
MwIDAQABo4IBlTCCAZEwDAYDVR0TAQH/BAIwADARBglghkgBhvhCAQEEBAMCBLAwDgYDVR0PAQH/
BAQDAgXgMHgGCWCGSAGG+EIBDQRrFmlDZXJ0aWZpY2F0IENOUlMtU3RhbmRhcmQuIFBvdXIgdG91
dGUgaW5mb3JtYXRpb24gc2UgcmVwb3J0ZXIg4CBodHRwOi8vaWdjLnNlcnZpY2VzLmNucnMuZnIv
Q05SUy1TdGFuZGFyZC8wHQYDVR0OBBYEFIMzJAkWPxSwse5OkgmofeJvWn9fMFMGA1UdIwRMMEqA
FGdZpeUHdEkD7wXPzC6kGNUQyJ48oS+kLTArMQswCQYDVQQGEwJGUjENMAsGA1UEChMEQ05SUzEN
MAsGA1UEAxMEQ05SU4IBAjAoBgNVHREEITAfgR1Lb25zdGFudGluLkthYmFzc2Fub3ZAbGlwNi5m
cjBGBgNVHR8EPzA9MDugOaA3hjVodHRwOi8vY3Jscy5zZXJ2aWNlcy5jbnJzLmZyL0NOUlMtU3Rh
bmRhcmQvZ2V0ZGVyLmNybDANBgkqhkiG9w0BAQUFAAOCAQEAcM0vJQP9+ZGps2rzejVnSeOosnBj
MUd15xOC41hpc479A0YT5qfM1LTtLk18RVrAN9vJp4F5OLgLZM4M8w/xwZ/oqo9X6RYgp3twb7lu
6WSt6qBJ14CPpdMGgDnE70iPSiWx5XiHEWk0SkApiChfEeGXkuny8InrkYflBTZLvOT0k98uIUl+
AXTu/mH9Qgs24H2pgSYLIvWWrSA1v+NkITZfaTutMW4LHON5GbvKa1rtyzEZtnu+JWCQEq7Z/GKz
yRzN3oXcncJn7ZQNPhCKuAFjJHPFGGsvb9kLjsAmncwPDpwfLEqFjLxcUdoD+/Etxggk+r8zK1Rh
kEHxk/lrIzGCAsMwggK/AgEBMDowNDELMAkGA1UEBhMCRlIxDTALBgNVBAoTBENOUlMxFjAUBgNV
BAMTDUNOUlMtU3RhbmRhcmQCAiaBMAkGBSsOAwIaBQCgggFeMBgGCSqGSIb3DQEJAzELBgkqhkiG
9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA2MDQwNDIwMzYyMFowIwYJKoZIhvcNAQkEMRYEFFG4nMB1
FCNa0SG0mPIQ/o3usIMKMEkGCSsGAQQBgjcQBDE8MDowNDELMAkGA1UEBhMCRlIxDTALBgNVBAoT
BENOUlMxFjAUBgNVBAMTDUNOUlMtU3RhbmRhcmQCAiaBMEsGCyqGSIb3DQEJEAILMTygOjA0MQsw
CQYDVQQGEwJGUjENMAsGA1UEChMEQ05SUzEWMBQGA1UEAxMNQ05SUy1TdGFuZGFyZAICJoEwZwYJ
KoZIhvcNAQkPMVowWDAKBggqhkiG9w0DBzAOBggqhkiG9w0DAgICAIAwDQYIKoZIhvcNAwICAUAw
BwYFKw4DAgcwDQYIKoZIhvcNAwICASgwBwYFKw4DAhowCgYIKoZIhvcNAgUwDQYJKoZIhvcNAQEB
BQAEggEAQ7B4ELjnt6A0GIAc8jxoDzp2QQcOMHYJ7znDa0w7QL+wqFu+umkvotYy21jwPmTUzuv/
VnO2Ly5JsJWYIRvEXZdahv09Iu9njG0tGzPFC2APNsRJ/mFxYe7oZtBvgopYqxJM6bqxw8MhyfVM
F0g3qhJt37apcg7GNNY2K12jUVk0uiIyRj8P68FN/iws2OAuB/GFIYbhErRb4Lzzj/ah8PFgbGvi
nVPCyslKltbOj24C6i63WbKDQZ44sPyBZcclUwPS3KTB7U35ghnfjKttQrikw+LIq0FdBDkUNglM
PXzTknKA8zctaiAukAYU0o82m/NEr80pmVELzkJ5XnW3eQAAAAAAAA==

------=_NextPart_000_000E_01C65838.322A3E80--