Hi!
I've updated the equalize patch to apply on 2.4.18.
The patch also addresses two race conditions in
ip_route_input(..) and ip_route_output_key(..).
The rt_hash_table entry is only read locked although elements
from the chain can be freed if there is a matching entry with
RTCF_EQUALIZE set.
Bye,
Patrick
--------------AA71B4FEC49FAE0692916818
Content-Type: application/octet-stream;
name="equalize_2.4.18.patch"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="equalize_2.4.18.patch"
ZGlmZiAtdXJOIGxpbnV4LTIuNC4xOC1jbGVhbi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcv
bG9hZC1iYWxhbmNpbmcudHh0IGxpbnV4LTIuNC4xOC9Eb2N1bWVudGF0aW9uL25ldHdvcmtp
bmcvbG9hZC1iYWxhbmNpbmcudHh0Ci0tLSBsaW51eC0yLjQuMTgtY2xlYW4vRG9jdW1lbnRh
dGlvbi9uZXR3b3JraW5nL2xvYWQtYmFsYW5jaW5nLnR4dAlUaHUgSmFuICAxIDAxOjAwOjAw
IDE5NzAKKysrIGxpbnV4LTIuNC4xOC9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbG9hZC1i
YWxhbmNpbmcudHh0CVRodSBNYXIgMjEgMjA6NDA6MjIgMjAwMgpAQCAtMCwwICsxLDEyNSBA
QAorTG9hZCBiYWxhbmNpbmcgdXNpbmcgbXVsdGlwYXRocyAocGF0Y2ggdmVyc2lvbjogNSkK
Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK
K0NvbnRhY3QgR3V1cyBTbGllcGVuIDxzbGllcGVuQHBoeXMudXUubmw+IGlmIHlvdSBuZWVk
IGhlbHAsIHdhbnQgdG8ga25vdworbW9yZSwgaGF2ZSByZW1hcmtzIG9yIGZ1cnRoZXIgaWRl
YSdzIHdpdGggcmVsYXRpb24gdG8gdGhpcy4KKworSW50cm8KKy0tLS0tCisKK0lmIHlvdSBo
YXZlIG11bHRpcGxlIHBoeXNpY2FsIG5ldHdvcmsgbGlua3MgdG8gYW5vdGhlciBjb21wdXRl
ciwgYW5kIHlvdSB3YW50Citzb21lIGtpbmQgb2YgbG9hZCBiYWxhbmNpbmcsIHlvdSBjYW4g
bm93IGRvIHNvLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgb25seQorYXBwbGllcyB0byBJUHY0
IHRyYWZmaWMsIG5vdCBmb3IgSVBYLCBJUHY2IG9yIGFueSBvdGhlciBwcm90b2NvbCAoeWV0
KS4KKworTmVlZGVkCistLS0tLQorCisqIExBVEVTVCBpcHJvdXRlIHBhY2thZ2UgZnJvbSBm
dHA6Ly9mdHAuaW5yLmFjLnJ1L2lwLXJvdXRpbmcvCisqIENPTkZJR19JUF9ST1VURV9NVUxU
SVBBVEggZW5hYmxlZCBpbiBrZXJuZWwgY29uZmlndXJhdGlvbiAoaXQncyBpbgorICBOZXR3
b3JraW5nIG9wdGlvbnMsIGJlbG93IHRoZSBBZHZhbmNlZCBSb3V0ZXIgb3B0aW9uIHlvdSds
bCBoYXZlIHRvIGVuYWJsZQorICB0b28pCisqIE9mY291cnNlIHlvdSBtdXN0IGFsc28gaGF2
ZSBwYXRjaGVkIHlvdXIga2VybmVsIGFuZCByZWNvbXBpbGVkIGl0IGZvciB0aGlzCisgIGZl
YXR1cmUgdG8gYmUgZW5hYmxlZC4KKyAgIAorVG8gZG8KKy0tLS0tCisKKyogTWFrZSBzdXJl
IHRoZSBkZXZpY2VzIHlvdSB3YW50IHRvIGNvbWJpbmUgYXJlIHVwLCB0aGV5IGFsbCBhY2Nl
cHQgdGhlCisgIHBhY2tldHMgeW91IHdhbnQgdG8gc2VuZCAoaWUsIHRoZXkgbXVzdCBhbGwg
aGF2ZSB0aGUgc2FtZSBJUCBhZGRyZXNzL25ldG1hc2sKKyAgb3Igc29tZXRoaW5nIGNsZXZl
ciB0byBnZXQgdGhlIHNhbWUgcmVzdWx0KQorKiBKdXN0IHRvIG1ha2Ugc3VyZSwgcmVtb3Zl
IGFueSByb3V0ZXMgdmlhIHRob3NlIGRldmljZXMgKHJvdXRlIGRlbCAuLi4pCisqIE5vdyBh
ZGQgYWxsIHJvdXRlcyB2aWEgb25lIGlwcm91dGUgY29tbWFuZCB1c2luZyB0aGUgJ25leHRo
b3BzJyBzdGF0ZW1lbnQ6CisKKyAgaXAgcm91dGUgYWRkIDxkZXN0YWRkcmVzcz4vPG5ldG1h
c2s+IGVxdWFsaXplIFxcCisgICAgIG5leHRob3AgZGV2IDxmaXJzdCBkZXZpY2U+IFxcCisg
ICAgIG5leHRob3AgZGV2IDxzZWNvbmQgZGV2aWNlPiBcXAorICAgICBuZXh0aG9wIC4uLgor
ICAgICAKKyogSnVzdCB0byBtYWtlIHN1cmUsIGZsdXNoIHJvdXRlIGNhY2hlOgorCisgIGVj
aG8gMSA+L3Byb2Mvc3lzL25ldC9pcHY0L3JvdXRlL2ZsdXNoCisgIAorRXhhbXBsZQorLS0t
LS0tLQorCitUaGlzIGlzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgdG8gbWFrZSBhIDIwIE1i
aXQgY29ubmVjdGlvbiBiZXR3ZWVuIHR3bworY29tcHV0ZXJzIHVzaW5nIDIgMTAgTWJpdCBl
dGhlcm5ldCBjYXJkcyBwZXIgY29tcHV0ZXIuIENvbXB1dGVyIDEgaGFzIElQCisxOTIuMTY4
LjEuMSBhbmQgY29tcHV0ZXIgMiBoYXMgSVAgMTkyLjE2OC4xLjIuIFdlIHN0YXJ0IGZyb20g
c2NyYXRjaDoKKworW2NvbXB1dGVyMV1+Lz5pZmNvbmZpZyBldGgwIDE5Mi4xNjguMS4xIG5l
dG1hc2sgMjU1LjI1NS4yNTUuMAorW2NvbXB1dGVyMV1+Lz5yb3V0ZSBkZWwgLW5ldCAxOTIu
MTY4LjEuMCBuZXRtYXNrIDI1NS4yNTUuMjU1LjAKK1tjb21wdXRlcjFdfi8+aWZjb25maWcg
ZXRoMSAxOTIuMTY4LjEuMSBuZXRtYXNrIDI1NS4yNTUuMjU1LjAKK1tjb21wdXRlcjFdfi8+
cm91dGUgZGVsIC1uZXQgMTkyLjE2OC4xLjAgbmV0bWFzayAyNTUuMjU1LjI1NS4wCitbY29t
cHV0ZXIxXX4vPmlwIHJvdXRlIGFkZCAxOTIuMTY4LjEuMC8yNCBlcXVhbGl6ZSBuZXh0aG9w
IGRldiBldGgwIG5leHRob3AgZGV2IGV0aDEKK1tjb21wdXRlcjFdfi8+ZWNobyAxID4vcHJv
Yy9zeXMvbmV0L2lwdjQvcm91dGUvZmx1c2gKKworW2NvbXB1dGVyMl1+Lz5pZmNvbmZpZyBl
dGgwIDE5Mi4xNjguMS4yIG5ldG1hc2sgMjU1LjI1NS4yNTUuMAorW2NvbXB1dGVyMl1+Lz5y
b3V0ZSBkZWwgLW5ldCAxOTIuMTY4LjEuMCBuZXRtYXNrIDI1NS4yNTUuMjU1LjAKK1tjb21w
dXRlcjJdfi8+aWZjb25maWcgZXRoMSAxOTIuMTY4LjEuMiBuZXRtYXNrIDI1NS4yNTUuMjU1
LjAKK1tjb21wdXRlcjJdfi8+cm91dGUgZGVsIC1uZXQgMTkyLjE2OC4xLjAgbmV0bWFzayAy
NTUuMjU1LjI1NS4wCitbY29tcHV0ZXIyXX4vPmlwIHJvdXRlIGFkZCAxOTIuMTY4LjEuMC8y
NCBlcXVhbGl6ZSBuZXh0aG9wIGRldiBldGgwIG5leHRob3AgZGV2IGV0aDEKK1tjb21wdXRl
cjJdfi8+ZWNobyAxID4vcHJvYy9zeXMvbmV0L2lwdjQvcm91dGUvZmx1c2gKKworWW91IGNh
biBldmVuIGFkZCBtb3JlIGNvbXB1dGVycywganVzdCByZXBsYWNlIHRoZSB4IGluIDE5Mi4x
NjguMS54IHdpdGggdGhlCitudW1iZXIgb2YgeW91ciBjb21wdXRlciwgYW5kIG1ha2Ugc3Vy
ZSBhbGwgZXRoMCdzIGFyZSBjb25uZWN0ZWQgdG8gZWFjaCBvdGhlcgorYW5kIGFsbCBldGgx
J3MuIFlvdSBjYW4gYWxzbyB1c2UgbW9yZSBkZXZpY2VzLCBqdXN0IGlmY29uZmlnIHRoZW0g
YWxsIGFuZAorcmVtb3ZlIHRoZSBkZWZhdWx0IHJvdXRlcyB0aGF0IGFyZSBnZW5lcmF0ZWQs
IGFuZCBhZGQgZXh0cmEgbmV4dGhvcHMuCisKK05vdGVzCistLS0tLQorCitJZiB5b3Ugd2Fu
dCB0byBhZGQgYSBnYXRld2F5IGVudHJ5IGluIHlvdXIgcm91dGluZyB0YWJsZSwgYW5kIHdh
bnQgaXQgdG8gYmUKK2JhbGFuY2VkIHRvbywgeW91IGZpcnN0IGhhdmUgdG8gbWFrZSBzaW5n
bGVwYXRoIGVudHJpZXMgZm9yIGV2ZXJ5IG5ldHdvcmsKK2ludGVyZmFjZSB5b3Ugd2FudCB0
byB1c2UsIGFmdGVyIHRoYXQgYWRkIHRoZSBnYXRld2F5IHdpdGggYWxsIHRoZSBuZXh0aG9w
cworZmlsbGVkIGluLCB0aGVuIGRlbGV0ZSB0aGUgc2luZ2xlcGF0aCByb3V0ZXMgYW5kIHRo
ZW4gYWRkIHRoZSBub3JtYWwKK211bHRpcGF0aCByb3V0ZS4KKworT2xkZXIgcGF0Y2ggdmVy
c2lvbnMgdXNlZCBhIC9wcm9jIGVudHJ5IHRvIGNvbnRyb2wgbG9hZC1iYWxhbmNpbmcuIFRo
aXMgZG9lcworbm90IHdvcmsgYW55bW9yZS4gWW91IHNob3VsZCB1c2UgdGhlICdlcXVhbGl6
ZScgZmxhZyBpbnN0ZWFkIHdoaWxlIGFkZGluZyBuZXcKK3JvdXRlcy4gWW91IG5lZWQgYSBm
cmVzaCB2ZXJzaW9uIG9mIGlwcm91dGUgZm9yIHRoYXQuCisKK1N0YXR1cworLS0tLS0tCisK
K1BhY2tldCB0eXBlOgkJQmFsYW5jZWQ/CU5vdGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FSUAkJ
CW5vCQlCdXQgd2UgZG9uJ3Qgd2FudCB0aGVtIHRvIDspCitJQ01QCQkJeWVzCitDb25uZWN0
aW9ubGVzcyBVRFAJeWVzCitDb25uZWN0ZWQgVURQCQl5ZXMKK0Jyb2FkY2FzdCBVRFAJCW5v
CQlXb3VsZCBiZSBuaWNlIGlmIGl0IHdvdWxkLAorCQkJCQlidXQgdGhpcyBpcyByYXJlbHkg
dXNlZCBmb3IKKwkJCQkJaGlnaCBiYW5kd2l0aCBkYXRhIHRyYW5zZmVycy4KK1RDUAkJCXll
cwkJQXQgbGVhc3QgYWxsIGRhdGEgcGFja2V0cyBhcmUsCisJCQkJCW1heWJlIHNvbWUgY29u
dHJvbCBwYWNrZXRzIGFyZQorCQkJCQlub3QuCisKKyhLbm93bikgQnVncworLS0tLS0tLS0t
LS0tCisKK0R1ZSB0byB0aGUgbmF0dXJlIG9mIHRoZSBwYXRjaCwgZXZlcnkgcGFja2V0IHRo
YXQgZm9sbG93cyBhIG11bHRpcGF0aCB1c2VzCithIGxpdHRsZSBtZW1vcnkgdGhhdCBpcyBu
b3QgaW5zdGFudGx5IGNsZWFuZWQgdXAsIGJ1dCBhZnRlciBhIHNob3J0IHBlcmlvZC4KK1Ro
aXMgbWVhbnMgdGhhdCBpZiB5b3VyIGxvYWQgZ2V0cyBoaWdoZXIsIG1lbW9yeSB1c2VhZ2Ug
aXMgaGlnaGVyLiBTaW5jZQordGhlcmUgaXMgYSBsaW1pdCB0byB0aGUgbWVtb3J5IHRoYXQg
Y2FuIGJlIGFsbG9jYXRlZCBmb3IgdGhlIHBhY2tldHMsIHRoZXJlCitpcyBhbHNvIGEgbG9h
ZCBsaW1pdC4gSSBjYW5ub3QgZ2l2ZSBleGFjdCBudW1iZXJzLCBob3dldmVyIHRoaXMgcGF0
Y2ggZG9lcword29yayB3aXRoIGEgbG9hZCBvZiAyMCBNYml0L3Mgd2l0aG91dCBwcm9ibGVt
cyBvbiBhIDQ4NiBkeDIgNjYsIGJ1dCBub3QKK3dpdGggYSBsb2FkIG9mIDQwMCBNYml0L3Mg
b24gYSBib3ggd2l0aCBtdWx0aXBsZSA0MDAgTWh6IFhlb24gcHJvY2Vzc29ycy4KK0lmIHRo
ZSBsb2FkIGdldHMgdG9vIGhpZ2gsIG5vIG1lbW9yeSBpcyBsZWZ0IGZvciBuZXR3b3JrIElP
LCB3aGljaCBzdG9wcworZm9yIGEgd2hpbGUgaWYgdGhhdCBoYXBwZW5zLiBUaGUga2VybmVs
IHNob3VsZCBub3QgY3Jhc2ggaWYgdGhpcyBoYXBwZW5zLgorCitUZWNobmljYWxseQorLS0t
LS0tLS0tLS0KKworTG9hZCBiYWxhbmNpbmcgbmVlZGVkIGEgc2xpZ2h0IGFkanVzdG1lbnQg
dG8gdGhlIHVucGF0Y2hlZCBsaW51eCBrZXJuZWwsCitiZWNhdXNlIG9mIHRoZSByb3V0ZSBj
YWNoZS4gTXVsdGlwYXRoIGlzIGFuIG9wdGlvbiBhbHJlYWR5IGZvdW5kIGluIHRoZSBvbGQK
KzIuMS54IGtlcm5lbHMuIEhvd2V2ZXIsIG9uY2UgYSBwYWNrZXQgYXJyaXZlcywgYW5kIGl0
IG1hdGNoZXMgYSBtdWx0aXBhdGgKK3JvdXRlLCBhIChxdWFzaSByYW5kb20pIGRldmljZSBv
dXQgb2YgdGhlIGxpc3Qgb2YgbmV4dGhvcHMgaXMgdGFrZW4gZm9yIGl0cworZGVzdGluYXRp
b24uIFRoYXQncyBva2F5LCBidXQgYWZ0ZXIgdGhhdCB0aGUga2VybmVsIHB1dHMgZXZlcnl0
aGluZyBpbnRvIGEKK2hhc2ggdGFibGUsIGFuZCB0aGUgbmV4dCB0aW1lIGEgcGFja2V0IHdp
dGggdGhlIHNhbWUgc291cmNlL2Rlc3QvdG9zIGFycml2ZXMsCitpdCBmaW5kcyBpdCBpcyBp
biB0aGUgaGFzaCB0YWJsZSwgYW5kIHJvdXRlcyBpdCB2aWEgdGhlIHNhbWUgZGV2aWNlIGFz
IGxhc3QKK3RpbWUuIFRoZSBhZGp1c3RtZW50IEkgbWFkZSBpcyBhcyBmb2xsb3dzOiBJZiB0
aGUga2VybmVsIHNlZXMgdGhhdCB0aGUgcm91dGUKK3RvIGJlIHRha2VuIGhhcyBnb3QgdGhl
ICdlcXVhbGl6ZScgZmxhZyBzZXQsIGl0IG5vdCBvbmx5IHNlbGVjdHMgdGhlIHJhbmRvbQor
ZGV2aWNlLCBidXQgYWxzbyB0YWdzIHRoZSBwYWNrZXQgd2l0aCB0aGUgUlRDRl9FUVVBTEla
RSBmbGFnLiBJZiBhbm90aGVyCitwYWNrZXQgb2YgdGhlIHNhbWUga2luZCBhcnJpdmVzLCBp
dCBpcyBsb29rZWQgdXAgaW4gdGhlIGhhc2ggdGFibGUuIEl0IHRoZW4KK2NoZWNrcyBpZiBv
dXIgZmxhZyBpcyBzZXQsIGFuZCBpZiBzbywgaXQgZGVsZXRlcyB0aGUgZW50cnkgaW4gdGhl
IGNhY2hlIGFuZAoraGFzIHRvIHJlY2FsY3VsYXRlIHRoZSBkZXN0aW5hdGlvbiBhZ2Fpbi4K
ZGlmZiAtdXJOIGxpbnV4LTIuNC4xOC1jbGVhbi9pbmNsdWRlL2xpbnV4L2luX3JvdXRlLmgg
bGludXgtMi40LjE4L2luY2x1ZGUvbGludXgvaW5fcm91dGUuaAotLS0gbGludXgtMi40LjE4
LWNsZWFuL2luY2x1ZGUvbGludXgvaW5fcm91dGUuaAlGcmkgSnVuIDEyIDA3OjUyOjMzIDE5
OTgKKysrIGxpbnV4LTIuNC4xOC9pbmNsdWRlL2xpbnV4L2luX3JvdXRlLmgJVGh1IE1hciAy
MSAyMDo0MDoyMiAyMDAyCkBAIC0xOCw2ICsxOCw3IEBACiAjZGVmaW5lIFJUQ0ZfTUFTUQkw
eDAwNDAwMDAwCiAjZGVmaW5lIFJUQ0ZfU05BVAkweDAwODAwMDAwCiAjZGVmaW5lIFJUQ0Zf
RE9SRURJUkVDVCAweDAxMDAwMDAwCisjZGVmaW5lIFJUQ0ZfRVFVQUxJWkUJMHgwMjAwMDAw
MAogI2RlZmluZSBSVENGX0RJUkVDVFNSQwkweDA0MDAwMDAwCiAjZGVmaW5lIFJUQ0ZfRE5B
VAkweDA4MDAwMDAwCiAjZGVmaW5lIFJUQ0ZfQlJPQURDQVNUCTB4MTAwMDAwMDAKZGlmZiAt
dXJOIGxpbnV4LTIuNC4xOC1jbGVhbi9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMgbGludXgt
Mi40LjE4L25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYwotLS0gbGludXgtMi40LjE4LWNsZWFu
L25ldC9pcHY0L2ZpYl9zZW1hbnRpY3MuYwlNb24gRmViIDI1IDIwOjM4OjE0IDIwMDIKKysr
IGxpbnV4LTIuNC4xOC9uZXQvaXB2NC9maWJfc2VtYW50aWNzLmMJVGh1IE1hciAyMSAyMDo0
MDoyMiAyMDAyCkBAIC0xMDEsNiArMTAxLDEwIEBACiB9OwogCiAKKyNpZmRlZiBDT05GSUdf
SVBfUk9VVEVfTVVMVElQQVRICit1bnNpZ25lZCBpbnQgbXBfY291bnRlcj0wOworI2VuZGlm
CisKIC8qIFJlbGVhc2UgYSBuZXh0aG9wIGluZm8gcmVjb3JkICovCiAKIHZvaWQgZnJlZV9m
aWJfaW5mbyhzdHJ1Y3QgZmliX2luZm8gKmZpKQpAQCAtOTU1LDcgKzk1OSw3IEBACiAJICAg
aXQgaXMgcHJldHR5IGJhZCBhcHByb3hpbWF0aW9uLgogCSAqLwogCi0JdyA9IGppZmZpZXMg
JSBmaS0+ZmliX3Bvd2VyOworCXcgPSBtcF9jb3VudGVyKysgJSBmaS0+ZmliX3Bvd2VyOwog
CiAJY2hhbmdlX25leHRob3BzKGZpKSB7CiAJCWlmICghKG5oLT5uaF9mbGFncyZSVE5IX0Zf
REVBRCkgJiYgbmgtPm5oX3Bvd2VyKSB7CmRpZmYgLXVyTiBsaW51eC0yLjQuMTgtY2xlYW4v
bmV0L2lwdjQvaXBfb3V0cHV0LmMgbGludXgtMi40LjE4L25ldC9pcHY0L2lwX291dHB1dC5j
Ci0tLSBsaW51eC0yLjQuMTgtY2xlYW4vbmV0L2lwdjQvaXBfb3V0cHV0LmMJV2VkIE9jdCAx
NyAyMzoxNjozOSAyMDAxCisrKyBsaW51eC0yLjQuMTgvbmV0L2lwdjQvaXBfb3V0cHV0LmMJ
VGh1IE1hciAyMSAyMDo0MDoyMiAyMDAyCkBAIC0zNTQsNyArMzU0LDcgQEAKIAogCS8qIE1h
a2Ugc3VyZSB3ZSBjYW4gcm91dGUgdGhpcyBwYWNrZXQuICovCiAJcnQgPSAoc3RydWN0IHJ0
YWJsZSAqKV9fc2tfZHN0X2NoZWNrKHNrLCAwKTsKLQlpZiAocnQgPT0gTlVMTCkgeworCWlm
IChydCA9PSBOVUxMIHx8IHJ0LT51LmRzdC5vYnNvbGV0ZSB8fCBydC0+cnRfZmxhZ3MmUlRD
Rl9FUVVBTElaRSkgewogCQl1MzIgZGFkZHI7CiAKIAkJLyogVXNlIGNvcnJlY3QgZGVzdGlu
YXRpb24gYWRkcmVzcyBpZiB3ZSBoYXZlIG9wdGlvbnMuICovCmRpZmYgLXVyTiBsaW51eC0y
LjQuMTgtY2xlYW4vbmV0L2lwdjQvcm91dGUuYyBsaW51eC0yLjQuMTgvbmV0L2lwdjQvcm91
dGUuYwotLS0gbGludXgtMi40LjE4LWNsZWFuL25ldC9pcHY0L3JvdXRlLmMJTW9uIEZlYiAy
NSAyMDozODoxNCAyMDAyCisrKyBsaW51eC0yLjQuMTgvbmV0L2lwdjQvcm91dGUuYwlUaHUg
TWFyIDIxIDIwOjQ2OjQyIDIwMDIKQEAgLTE0MTksOCArMTQxOSwxMSBAQAogCQlnb3RvIG1h
cnRpYW5fZGVzdGluYXRpb247CiAKICNpZmRlZiBDT05GSUdfSVBfUk9VVEVfTVVMVElQQVRI
Ci0JaWYgKHJlcy5maS0+ZmliX25ocyA+IDEgJiYga2V5Lm9pZiA9PSAwKQorCWlmIChyZXMu
ZmktPmZpYl9uaHMgPiAxICYmIGtleS5vaWYgPT0gMCkgewogCQlmaWJfc2VsZWN0X211bHRp
cGF0aCgma2V5LCAmcmVzKTsKKwkJaWYgKHJlcy5maS0+ZmliX2ZsYWdzJlJUTV9GX0VRVUFM
SVpFKQorCQkJZmxhZ3MgfD0gUlRDRl9FUVVBTElaRTsKKwl9CiAjZW5kaWYKIAlvdXRfZGV2
ID0gaW5fZGV2X2dldChGSUJfUkVTX0RFVihyZXMpKTsKIAlpZiAob3V0X2RldiA9PSBOVUxM
KSB7CkBAIC0xNjIyLDE1ICsxNjI1LDE1IEBACiBpbnQgaXBfcm91dGVfaW5wdXQoc3RydWN0
IHNrX2J1ZmYgKnNrYiwgdTMyIGRhZGRyLCB1MzIgc2FkZHIsCiAJCSAgIHU4IHRvcywgc3Ry
dWN0IG5ldF9kZXZpY2UgKmRldikKIHsKLQlzdHJ1Y3QgcnRhYmxlICogcnRoOworCXN0cnVj
dCBydGFibGUgKiBydGgsICoqcnRocDsKIAl1bnNpZ25lZAloYXNoOwogCWludCBpaWYgPSBk
ZXYtPmlmaW5kZXg7CiAKIAl0b3MgJj0gSVBUT1NfUlRfTUFTSzsKIAloYXNoID0gcnRfaGFz
aF9jb2RlKGRhZGRyLCBzYWRkciBeIChpaWYgPDwgNSksIHRvcyk7CiAKLQlyZWFkX2xvY2so
JnJ0X2hhc2hfdGFibGVbaGFzaF0ubG9jayk7Ci0JZm9yIChydGggPSBydF9oYXNoX3RhYmxl
W2hhc2hdLmNoYWluOyBydGg7IHJ0aCA9IHJ0aC0+dS5ydF9uZXh0KSB7CisJd3JpdGVfbG9j
aygmcnRfaGFzaF90YWJsZVtoYXNoXS5sb2NrKTsKKwlmb3IgKHJ0aHA9JnJ0X2hhc2hfdGFi
bGVbaGFzaF0uY2hhaW47IChydGg9KnJ0aHApOyBydGhwPSZydGgtPnUucnRfbmV4dCkgewog
CQlpZiAocnRoLT5rZXkuZHN0ID09IGRhZGRyICYmCiAJCSAgICBydGgtPmtleS5zcmMgPT0g
c2FkZHIgJiYKIAkJICAgIHJ0aC0+a2V5LmlpZiA9PSBpaWYgJiYKQEAgLTE2MzksNiArMTY0
MiwxMiBAQAogCQkgICAgcnRoLT5rZXkuZndtYXJrID09IHNrYi0+bmZtYXJrICYmCiAjZW5k
aWYKIAkJICAgIHJ0aC0+a2V5LnRvcyA9PSB0b3MpIHsKKwkJCWlmIChydGgtPnJ0X2ZsYWdz
JlJUQ0ZfRVFVQUxJWkUpIHsKKwkJCQkqcnRocCA9IHJ0aC0+dS5ydF9uZXh0OworCQkJCXJ0
aC0+dS5ydF9uZXh0ID0gTlVMTDsKKwkJCQlydF9mcmVlKHJ0aCk7CisJCQkJYnJlYWs7CisJ
CQl9CiAJCQlydGgtPnUuZHN0Lmxhc3R1c2UgPSBqaWZmaWVzOwogCQkJZHN0X2hvbGQoJnJ0
aC0+dS5kc3QpOwogCQkJcnRoLT51LmRzdC5fX3VzZSsrOwpAQCAtMTY0OCw3ICsxNjU3LDcg
QEAKIAkJCXJldHVybiAwOwogCQl9CiAJfQotCXJlYWRfdW5sb2NrKCZydF9oYXNoX3RhYmxl
W2hhc2hdLmxvY2spOworCXdyaXRlX3VubG9jaygmcnRfaGFzaF90YWJsZVtoYXNoXS5sb2Nr
KTsKIAogCS8qIE11bHRpY2FzdCByZWNvZ25pdGlvbiBsb2dpYyBpcyBtb3ZlZCBmcm9tIHJv
dXRlIGNhY2hlIHRvIGhlcmUuCiAJICAgVGhlIHByb2JsZW0gd2FzIHRoYXQgdG9vIG1hbnkg
RXRoZXJuZXQgY2FyZHMgaGF2ZSBicm9rZW4vbWlzc2luZwpAQCAtMTg1Miw4ICsxODYxLDEx
IEBACiAJfQogCiAjaWZkZWYgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSAotCWlmIChyZXMu
ZmktPmZpYl9uaHMgPiAxICYmIGtleS5vaWYgPT0gMCkKKwlpZiAocmVzLmZpLT5maWJfbmhz
ID4gMSAmJiBrZXkub2lmID09IDApIHsKIAkJZmliX3NlbGVjdF9tdWx0aXBhdGgoJmtleSwg
JnJlcyk7CisJCWlmIChyZXMuZmktPmZpYl9mbGFncyZSVE1fRl9FUVVBTElaRSkKKwkJCWZs
YWdzIHw9IFJUQ0ZfRVFVQUxJWkU7CisJfQogCWVsc2UKICNlbmRpZgogCWlmICghcmVzLnBy
ZWZpeGxlbiAmJiByZXMudHlwZSA9PSBSVE5fVU5JQ0FTVCAmJiAha2V5Lm9pZikKQEAgLTE5
ODQsMTIgKzE5OTYsMTIgQEAKIGludCBpcF9yb3V0ZV9vdXRwdXRfa2V5KHN0cnVjdCBydGFi
bGUgKipycCwgY29uc3Qgc3RydWN0IHJ0X2tleSAqa2V5KQogewogCXVuc2lnbmVkIGhhc2g7
Ci0Jc3RydWN0IHJ0YWJsZSAqcnRoOworCXN0cnVjdCBydGFibGUgKnJ0aCwgKipydGhwOwog
CiAJaGFzaCA9IHJ0X2hhc2hfY29kZShrZXktPmRzdCwga2V5LT5zcmMgXiAoa2V5LT5vaWYg
PDwgNSksIGtleS0+dG9zKTsKIAotCXJlYWRfbG9ja19iaCgmcnRfaGFzaF90YWJsZVtoYXNo
XS5sb2NrKTsKLQlmb3IgKHJ0aCA9IHJ0X2hhc2hfdGFibGVbaGFzaF0uY2hhaW47IHJ0aDsg
cnRoID0gcnRoLT51LnJ0X25leHQpIHsKKwl3cml0ZV9sb2NrX2JoKCZydF9oYXNoX3RhYmxl
W2hhc2hdLmxvY2spOworCWZvciAocnRocD0mcnRfaGFzaF90YWJsZVtoYXNoXS5jaGFpbjsg
KHJ0aD0qcnRocCk7IHJ0aHA9JnJ0aC0+dS5ydF9uZXh0KSB7CiAJCWlmIChydGgtPmtleS5k
c3QgPT0ga2V5LT5kc3QgJiYKIAkJICAgIHJ0aC0+a2V5LnNyYyA9PSBrZXktPnNyYyAmJgog
CQkgICAgcnRoLT5rZXkuaWlmID09IDAgJiYKQEAgLTE5OTksNiArMjAxMSwxMiBAQAogI2Vu
ZGlmCiAJCSAgICAhKChydGgtPmtleS50b3MgXiBrZXktPnRvcykgJgogCQkJICAgIChJUFRP
U19SVF9NQVNLIHwgUlRPX09OTElOSykpKSB7CisJCQlpZiAocnRoLT5ydF9mbGFncyZSVENG
X0VRVUFMSVpFKSB7CisJCQkJKnJ0aHAgPSBydGgtPnUucnRfbmV4dDsKKwkJCQlydGgtPnUu
cnRfbmV4dCA9IE5VTEw7CisJCQkJcnRfZnJlZShydGgpOworCQkJCWJyZWFrOworCQkJfQog
CQkJcnRoLT51LmRzdC5sYXN0dXNlID0gamlmZmllczsKIAkJCWRzdF9ob2xkKCZydGgtPnUu
ZHN0KTsKIAkJCXJ0aC0+dS5kc3QuX191c2UrKzsKQEAgLTIwMDgsNyArMjAyNiw3IEBACiAJ
CQlyZXR1cm4gMDsKIAkJfQogCX0KLQlyZWFkX3VubG9ja19iaCgmcnRfaGFzaF90YWJsZVto
YXNoXS5sb2NrKTsKKwl3cml0ZV91bmxvY2tfYmgoJnJ0X2hhc2hfdGFibGVbaGFzaF0ubG9j
ayk7CiAKIAlyZXR1cm4gaXBfcm91dGVfb3V0cHV0X3Nsb3cocnAsIGtleSk7CiB9CQpkaWZm
IC11ck4gbGludXgtMi40LjE4LWNsZWFuL25ldC9pcHY0L3VkcC5jIGxpbnV4LTIuNC4xOC9u
ZXQvaXB2NC91ZHAuYwotLS0gbGludXgtMi40LjE4LWNsZWFuL25ldC9pcHY0L3VkcC5jCU1v
biBGZWIgMjUgMjA6Mzg6MTQgMjAwMgorKysgbGludXgtMi40LjE4L25ldC9pcHY0L3VkcC5j
CVRodSBNYXIgMjEgMjA6NDg6MDcgMjAwMgpAQCAtNzQwLDYgKzc0MCwxNCBAQAogCXNrLT5z
dGF0ZSA9IFRDUF9FU1RBQkxJU0hFRDsKIAlzay0+cHJvdGluZm8uYWZfaW5ldC5pZCA9IGpp
ZmZpZXM7CiAKKyAjaWZkZWYgQ09ORklHX0lQX1JPVVRFX01VTFRJUEFUSAorCWlmKHJ0LT5y
dF9mbGFncyZSVENGX0VRVUFMSVpFKSB7CisJCWlwX3J0X3B1dChydCk7CisJCXNrLT5kc3Rf
Y2FjaGU9TlVMTDsKKwl9CisJZWxzZQorICNlbmRpZgorCQogCXNrX2RzdF9zZXQoc2ssICZy
dC0+dS5kc3QpOwogCXJldHVybigwKTsKIH0K
--------------AA71B4FEC49FAE0692916818--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/