Re: [RFC] new kernel syscall

Matthew Kirkwood (weejock@ferret.lmh.ox.ac.uk)
Wed, 21 Jul 1999 11:22:12 +0100 (GMT)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--27511946-1519860860-932552532=:9430
Content-Type: TEXT/PLAIN; charset=US-ASCII

On Tue, 20 Jul 1999, Pavel Machek wrote:

> > The syscall essentially exposes current->dumpable to userland. NAMES
> > FOR THE SYSCALL ON A POSTCARD PLEASE.
> >
> > Why would you want do do this?
> >
> > Well, in userland, we are having to do a lot of second guessing of
> > current->dumpable. If dumpable is FALSE, we need to restrict several
> > things in the dynamic linker, and libc, for security reasons.
>
> Yes, please. This was one of major reasons elfcap patch became a bit
> ugly. We'll need that few months before we can put capabilities into
> mainstream use.

Attached is a patch which does a little more than what
was suggested. It:
* splits dumpable into three flags which separately protect against
signals and ptrace and restrict core dumps.
* exposes this to userspace via prctl(2) - a process can query its
protection level, and also increase it.

This has potentially serious security implications, and there could
well be cases that I've missed, or reasons why this is just a dangerous
idea.

Comments?

Matthew.

--27511946-1519860860-932552532=:9430
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="2.3.10-task-prot.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.10.9907211122120.9430@ferret.lmh.ox.ac.uk>
Content-Description:
Content-Disposition: attachment; filename="2.3.10-task-prot.diff"

ZGlmZiAtcnUgbGludXgtMi4zLjEwLWNsZWFuL2FyY2gvYWxwaGEva2VybmVs
L3B0cmFjZS5jIGxpbnV4LTIuMy4xMC9hcmNoL2FscGhhL2tlcm5lbC9wdHJh
Y2UuYw0KLS0tIGxpbnV4LTIuMy4xMC1jbGVhbi9hcmNoL2FscGhhL2tlcm5l
bC9wdHJhY2UuYwlTdW4gSnVsICA0IDIxOjQxOjA4IDE5OTkNCisrKyBsaW51
eC0yLjMuMTAvYXJjaC9hbHBoYS9rZXJuZWwvcHRyYWNlLmMJVHVlIEp1bCAy
MCAyMDowNDoyMSAxOTk5DQpAQCAtMjU2LDcgKzI1Niw3IEBADQogCQlyZXQg
PSAtRVBFUk07DQogCQlpZiAoY2hpbGQgPT0gY3VycmVudCkNCiAJCQlnb3Rv
IG91dDsNCi0JCWlmICgoIWNoaWxkLT5kdW1wYWJsZSB8fA0KKwkJaWYgKCgo
Y2hpbGQtPnByb3RmbGFncyAmIFBSX0ZMQUdTX1BUUkFDRSkgfHwNCiAJCSAg
ICAgKGN1cnJlbnQtPnVpZCAhPSBjaGlsZC0+ZXVpZCkgfHwNCiAJCSAgICAg
KGN1cnJlbnQtPnVpZCAhPSBjaGlsZC0+c3VpZCkgfHwNCiAJCSAgICAgKGN1
cnJlbnQtPnVpZCAhPSBjaGlsZC0+dWlkKSB8fA0KZGlmZiAtcnUgbGludXgt
Mi4zLjEwLWNsZWFuL2FyY2gvYXJtL2tlcm5lbC9wdHJhY2UuYyBsaW51eC0y
LjMuMTAvYXJjaC9hcm0va2VybmVsL3B0cmFjZS5jDQotLS0gbGludXgtMi4z
LjEwLWNsZWFuL2FyY2gvYXJtL2tlcm5lbC9wdHJhY2UuYwlUaHUgSnVuIDE3
IDA5OjExOjM1IDE5OTkNCisrKyBsaW51eC0yLjMuMTAvYXJjaC9hcm0va2Vy
bmVsL3B0cmFjZS5jCVR1ZSBKdWwgMjAgMjA6MDg6MDMgMTk5OQ0KQEAgLTU2
MCw3ICs1NjAsNyBAQA0KIAlpZiAocmVxdWVzdCA9PSBQVFJBQ0VfQVRUQUNI
KSB7DQogCQlpZiAoY2hpbGQgPT0gY3VycmVudCkNCiAJCQlnb3RvIG91dDsN
Ci0JCWlmICgoIWNoaWxkLT5kdW1wYWJsZSB8fA0KKwkJaWYgKCgoY2hpbGQt
PnByb3RmbGFncyAmIFBSX0ZMQUdTX1BUUkFDRSkgfHwNCiAJCSAgICAoY3Vy
cmVudC0+dWlkICE9IGNoaWxkLT5ldWlkKSB8fA0KIAkJICAgIChjdXJyZW50
LT51aWQgIT0gY2hpbGQtPnN1aWQpIHx8DQogCQkgICAgKGN1cnJlbnQtPnVp
ZCAhPSBjaGlsZC0+dWlkKSB8fA0KZGlmZiAtcnUgbGludXgtMi4zLjEwLWNs
ZWFuL2FyY2gvaTM4Ni9rZXJuZWwvcHRyYWNlLmMgbGludXgtMi4zLjEwL2Fy
Y2gvaTM4Ni9rZXJuZWwvcHRyYWNlLmMNCi0tLSBsaW51eC0yLjMuMTAtY2xl
YW4vYXJjaC9pMzg2L2tlcm5lbC9wdHJhY2UuYwlTdW4gSnVsICA0IDIxOjQx
OjA4IDE5OTkNCisrKyBsaW51eC0yLjMuMTAvYXJjaC9pMzg2L2tlcm5lbC9w
dHJhY2UuYwlUdWUgSnVsIDIwIDIwOjAzOjU5IDE5OTkNCkBAIC0xNjIsNyAr
MTYyLDcgQEANCiAJaWYgKHJlcXVlc3QgPT0gUFRSQUNFX0FUVEFDSCkgew0K
IAkJaWYgKGNoaWxkID09IGN1cnJlbnQpDQogCQkJZ290byBvdXQ7DQotCQlp
ZiAoKCFjaGlsZC0+ZHVtcGFibGUgfHwNCisJCWlmICgoKGNoaWxkLT5wcm90
ZmxhZ3MgJiBQUl9GTEFHU19QVFJBQ0UpIHx8DQogCQkgICAgKGN1cnJlbnQt
PnVpZCAhPSBjaGlsZC0+ZXVpZCkgfHwNCiAJCSAgICAoY3VycmVudC0+dWlk
ICE9IGNoaWxkLT5zdWlkKSB8fA0KIAkJICAgIChjdXJyZW50LT51aWQgIT0g
Y2hpbGQtPnVpZCkgfHwNCmRpZmYgLXJ1IGxpbnV4LTIuMy4xMC1jbGVhbi9h
cmNoL202OGsva2VybmVsL3B0cmFjZS5jIGxpbnV4LTIuMy4xMC9hcmNoL202
OGsva2VybmVsL3B0cmFjZS5jDQotLS0gbGludXgtMi4zLjEwLWNsZWFuL2Fy
Y2gvbTY4ay9rZXJuZWwvcHRyYWNlLmMJTW9uIEp1biAgNyAxOToxNTozMyAx
OTk5DQorKysgbGludXgtMi4zLjEwL2FyY2gvbTY4ay9rZXJuZWwvcHRyYWNl
LmMJVHVlIEp1bCAyMCAyMDowNzoyMyAxOTk5DQpAQCAtMzE5LDcgKzMxOSw3
IEBADQogCWlmIChyZXF1ZXN0ID09IFBUUkFDRV9BVFRBQ0gpIHsNCiAJCWlm
IChjaGlsZCA9PSBjdXJyZW50KQ0KIAkJCWdvdG8gb3V0Ow0KLQkJaWYgKCgh
Y2hpbGQtPmR1bXBhYmxlIHx8DQorCQlpZiAoKChjaGlsZC0+cHJvdGZsYWdz
ICYgUFJfRkxBR1NfUFRSQUNFKSB8fA0KIAkJICAgIChjdXJyZW50LT51aWQg
IT0gY2hpbGQtPmV1aWQpIHx8DQogCQkgICAgKGN1cnJlbnQtPnVpZCAhPSBj
aGlsZC0+c3VpZCkgfHwNCiAJCSAgICAoY3VycmVudC0+dWlkICE9IGNoaWxk
LT51aWQpIHx8DQpkaWZmIC1ydSBsaW51eC0yLjMuMTAtY2xlYW4vYXJjaC9t
aXBzL2tlcm5lbC9pcml4ZWxmLmMgbGludXgtMi4zLjEwL2FyY2gvbWlwcy9r
ZXJuZWwvaXJpeGVsZi5jDQotLS0gbGludXgtMi4zLjEwLWNsZWFuL2FyY2gv
bWlwcy9rZXJuZWwvaXJpeGVsZi5jCVN1biBKdW4gMjcgMDI6MDM6MzEgMTk5
OQ0KKysrIGxpbnV4LTIuMy4xMC9hcmNoL21pcHMva2VybmVsL2lyaXhlbGYu
YwlUdWUgSnVsIDIwIDIwOjExOjMzIDE5OTkNCkBAIC0xMTM2LDkgKzExMzYs
OSBAQA0KIAllbGZfZnByZWdzZXRfdCBmcHU7CQkvKiBOVF9QUkZQUkVHICov
DQogCXN0cnVjdCBlbGZfcHJwc2luZm8gcHNpbmZvOwkvKiBOVF9QUlBTSU5G
TyAqLw0KIAkNCi0JaWYgKCFjdXJyZW50LT5kdW1wYWJsZSB8fCBsaW1pdCA8
IFBBR0VfU0laRSkNCisJaWYgKChjdXJyZW50LT5wcm90ZmxhZ3MgJiBQUl9G
TEFHX0NPUkUpIHx8IGxpbWl0IDwgUEFHRV9TSVpFKQ0KIAkJcmV0dXJuIDA7
DQotCWN1cnJlbnQtPmR1bXBhYmxlID0gMDsNCisJY3VycmVudC0+cHJvdGZs
YWdzIHw9IFBSX0ZMQUdfQ09SRTsNCiANCiAjaWZuZGVmIENPTkZJR19CSU5G
TVRfSVJJWA0KIAlNT0RfSU5DX1VTRV9DT1VOVDsNCmRpZmYgLXJ1IGxpbnV4
LTIuMy4xMC1jbGVhbi9hcmNoL21pcHMva2VybmVsL3B0cmFjZS5jIGxpbnV4
LTIuMy4xMC9hcmNoL21pcHMva2VybmVsL3B0cmFjZS5jDQotLS0gbGludXgt
Mi4zLjEwLWNsZWFuL2FyY2gvbWlwcy9rZXJuZWwvcHRyYWNlLmMJVHVlIEp1
bCAgNiAwMzo0NDo1NyAxOTk5DQorKysgbGludXgtMi4zLjEwL2FyY2gvbWlw
cy9rZXJuZWwvcHRyYWNlLmMJVHVlIEp1bCAyMCAyMDowNTo1NyAxOTk5DQpA
QCAtNjEsNyArNjEsNyBAQA0KIAkJCXJlcyA9IC1FUEVSTTsNCiAJCQlnb3Rv
IG91dDsNCiAJCX0NCi0JCWlmICgoIWNoaWxkLT5kdW1wYWJsZSB8fA0KKwkJ
aWYgKCgoY2hpbGQtPnByb3RmbGFncyAmIFBSX0ZMQUdTX1BUUkFDRSkgfHwN
CiAJCSAgICAoY3VycmVudC0+dWlkICE9IGNoaWxkLT5ldWlkKSB8fA0KIAkJ
ICAgIChjdXJyZW50LT51aWQgIT0gY2hpbGQtPnN1aWQpIHx8DQogCQkgICAg
KGN1cnJlbnQtPnVpZCAhPSBjaGlsZC0+dWlkKSB8fA0KZGlmZiAtcnUgbGlu
dXgtMi4zLjEwLWNsZWFuL2FyY2gvcHBjL2tlcm5lbC9wdHJhY2UuYyBsaW51
eC0yLjMuMTAvYXJjaC9wcGMva2VybmVsL3B0cmFjZS5jDQotLS0gbGludXgt
Mi4zLjEwLWNsZWFuL2FyY2gvcHBjL2tlcm5lbC9wdHJhY2UuYwlNb24gSnVu
ICA3IDE5OjE1OjMzIDE5OTkNCisrKyBsaW51eC0yLjMuMTAvYXJjaC9wcGMv
a2VybmVsL3B0cmFjZS5jCVR1ZSBKdWwgMjAgMjA6MDc6MTMgMTk5OQ0KQEAg
LTMwOCw3ICszMDgsNyBAQA0KIAlpZiAocmVxdWVzdCA9PSBQVFJBQ0VfQVRU
QUNIKSB7DQogCQlpZiAoY2hpbGQgPT0gY3VycmVudCkNCiAJCQlnb3RvIG91
dDsNCi0JCWlmICgoIWNoaWxkLT5kdW1wYWJsZSB8fA0KKwkJaWYgKCgoY2hp
bGQtPnByb3RmbGFncyAmIFBSX0ZMQUdTX1BUUkFDRSkgfHwNCiAJCSAgICAo
Y3VycmVudC0+dWlkICE9IGNoaWxkLT5ldWlkKSB8fA0KIAkJICAgIChjdXJy
ZW50LT51aWQgIT0gY2hpbGQtPnVpZCkgfHwNCiAJCSAgICAoY3VycmVudC0+
dWlkICE9IGNoaWxkLT5zdWlkKSB8fA0KZGlmZiAtcnUgbGludXgtMi4zLjEw
LWNsZWFuL2FyY2gvc3BhcmMva2VybmVsL3B0cmFjZS5jIGxpbnV4LTIuMy4x
MC9hcmNoL3NwYXJjL2tlcm5lbC9wdHJhY2UuYw0KLS0tIGxpbnV4LTIuMy4x
MC1jbGVhbi9hcmNoL3NwYXJjL2tlcm5lbC9wdHJhY2UuYwlNb24gSnVsICA1
IDE5OjMwOjExIDE5OTkNCisrKyBsaW51eC0yLjMuMTAvYXJjaC9zcGFyYy9r
ZXJuZWwvcHRyYWNlLmMJVHVlIEp1bCAyMCAyMDowNDozNyAxOTk5DQpAQCAt
MzIxLDcgKzMyMSw3IEBADQogCQkJcHRfZXJyb3JfcmV0dXJuKHJlZ3MsIEVQ
RVJNKTsNCiAJCQlnb3RvIG91dDsNCiAJCX0NCi0JCWlmKCghY2hpbGQtPmR1
bXBhYmxlIHx8DQorCQlpZiAoKChjaGlsZC0+cHJvdGZsYWdzICYgUFJfRkxB
R1NfUFRSQUNFKSB8fA0KIAkJICAgIChjdXJyZW50LT51aWQgIT0gY2hpbGQt
PmV1aWQpIHx8DQogCQkgICAgKGN1cnJlbnQtPnVpZCAhPSBjaGlsZC0+dWlk
KSB8fA0KIAkJICAgIChjdXJyZW50LT51aWQgIT0gY2hpbGQtPnN1aWQpIHx8
DQpkaWZmIC1ydSBsaW51eC0yLjMuMTAtY2xlYW4vYXJjaC9zcGFyYzY0L2tl
cm5lbC9iaW5mbXRfYW91dDMyLmMgbGludXgtMi4zLjEwL2FyY2gvc3BhcmM2
NC9rZXJuZWwvYmluZm10X2FvdXQzMi5jDQotLS0gbGludXgtMi4zLjEwLWNs
ZWFuL2FyY2gvc3BhcmM2NC9rZXJuZWwvYmluZm10X2FvdXQzMi5jCUZyaSBK
dWwgIDIgMDE6MzM6MTIgMTk5OQ0KKysrIGxpbnV4LTIuMy4xMC9hcmNoL3Nw
YXJjNjQva2VybmVsL2JpbmZtdF9hb3V0MzIuYwlUdWUgSnVsIDIwIDIwOjA5
OjM2IDE5OTkNCkBAIC03Niw3ICs3Niw4IEBADQogICogQ3VycmVudGx5IG9u
bHkgYSBzdHViLWZ1bmN0aW9uLg0KICAqDQogICogTm90ZSB0aGF0IHNldHVp
ZC9zZXRnaWQgZmlsZXMgd29uJ3QgbWFrZSBhIGNvcmUtZHVtcCBpZiB0aGUg
dWlkL2dpZA0KLSAqIGNoYW5nZWQgZHVlIHRvIHRoZSBzZXRbdXxnXWlkLiBJ
dCdzIGVuZm9yY2VkIGJ5IHRoZSAiY3VycmVudC0+ZHVtcGFibGUiDQorICog
Y2hhbmdlZCBkdWUgdG8gdGhlIHNldFt1fGddaWQuIEl0J3MgZW5mb3JjZWQg
YnkNCisgKiAJY3VycmVudC0+cHJvdGZsYWdzICYgUFJfRkxBR1NfQ09SRQ0K
ICAqIGZpZWxkLCB3aGljaCBhbHNvIG1ha2VzIHN1cmUgdGhlIGNvcmUtZHVt
cHMgd29uJ3QgYmUgcmVjdXJzaXZlIGlmIHRoZQ0KICAqIGR1bXBpbmcgb2Yg
dGhlIHByb2Nlc3MgcmVzdWx0cyBpbiBhbm90aGVyIGVycm9yLi4NCiAgKi8N
CkBAIC05NSw5ICs5NiwxMCBAQA0KICMgICAgICAgZGVmaW5lIFNUQVJUX0RB
VEEodSkgICAgKHUudV90c2l6ZSkNCiAjICAgICAgIGRlZmluZSBTVEFSVF9T
VEFDSyh1KSAgICgocmVncy0+dV9yZWdzW1VSRUdfRlBdKSAmIH4oUEFHRV9T
SVpFIC0gMSkpDQogDQotCWlmICghY3VycmVudC0+ZHVtcGFibGUgfHwgYXRv
bWljX3JlYWQoJmN1cnJlbnQtPm1tLT5jb3VudCkgIT0gMSkNCisJaWYgKChj
dXJyZW50LT5wcm90ZmxhZ3MgJiBQUl9GTEFHU19DT1JFKQ0KKwkgICAgfHwg
YXRvbWljX3JlYWQoJmN1cnJlbnQtPm1tLT5jb3VudCkgIT0gMSkNCiAJCXJl
dHVybiAwOw0KLQljdXJyZW50LT5kdW1wYWJsZSA9IDA7DQorCWN1cnJlbnQt
PnByb3RmbGFncyB8PSBQUl9GTEFHU19DT1JFOw0KIA0KIC8qIFNlZSBpZiB3
ZSBoYXZlIGVub3VnaCByb29tIHRvIHdyaXRlIHRoZSB1cGFnZS4gICovDQog
CWlmIChjdXJyZW50LT5ybGltW1JMSU1JVF9DT1JFXS5ybGltX2N1ciA8IFBB
R0VfU0laRSkNCmRpZmYgLXJ1IGxpbnV4LTIuMy4xMC1jbGVhbi9hcmNoL3Nw
YXJjNjQva2VybmVsL3B0cmFjZS5jIGxpbnV4LTIuMy4xMC9hcmNoL3NwYXJj
NjQva2VybmVsL3B0cmFjZS5jDQotLS0gbGludXgtMi4zLjEwLWNsZWFuL2Fy
Y2gvc3BhcmM2NC9rZXJuZWwvcHRyYWNlLmMJTW9uIEp1bCAgNSAxOTozMDox
MSAxOTk5DQorKysgbGludXgtMi4zLjEwL2FyY2gvc3BhcmM2NC9rZXJuZWwv
cHRyYWNlLmMJVHVlIEp1bCAyMCAyMDowNzozNyAxOTk5DQpAQCAtMTc1LDcg
KzE3NSw3IEBADQogCQkJcHRfZXJyb3JfcmV0dXJuKHJlZ3MsIEVQRVJNKTsN
CiAJCQlnb3RvIG91dDsNCiAJCX0NCi0JCWlmKCghY2hpbGQtPmR1bXBhYmxl
IHx8DQorCQlpZiAoKChjaGlsZC0+cHJvdGZsYWdzICYgUFJfRkxBR1NfUFRS
QUNFKSB8fA0KIAkJICAgIChjdXJyZW50LT51aWQgIT0gY2hpbGQtPmV1aWQp
IHx8DQogCQkgICAgKGN1cnJlbnQtPnVpZCAhPSBjaGlsZC0+dWlkKSB8fA0K
IAkJICAgIChjdXJyZW50LT51aWQgIT0gY2hpbGQtPnN1aWQpIHx8DQpkaWZm
IC1ydSBsaW51eC0yLjMuMTAtY2xlYW4vZnMvYmluZm10X2FvdXQuYyBsaW51
eC0yLjMuMTAvZnMvYmluZm10X2FvdXQuYw0KLS0tIGxpbnV4LTIuMy4xMC1j
bGVhbi9mcy9iaW5mbXRfYW91dC5jCVRodSBKdWwgIDEgMTg6NDU6NTcgMTk5
OQ0KKysrIGxpbnV4LTIuMy4xMC9mcy9iaW5mbXRfYW91dC5jCVR1ZSBKdWwg
MjAgMTk6NTQ6NDMgMTk5OQ0KQEAgLTc3LDcgKzc3LDggQEANCiAgKiBDdXJy
ZW50bHkgb25seSBhIHN0dWItZnVuY3Rpb24uDQogICoNCiAgKiBOb3RlIHRo
YXQgc2V0dWlkL3NldGdpZCBmaWxlcyB3b24ndCBtYWtlIGEgY29yZS1kdW1w
IGlmIHRoZSB1aWQvZ2lkDQotICogY2hhbmdlZCBkdWUgdG8gdGhlIHNldFt1
fGddaWQuIEl0J3MgZW5mb3JjZWQgYnkgdGhlICJjdXJyZW50LT5kdW1wYWJs
ZSINCisgKiBjaGFuZ2VkIGR1ZSB0byB0aGUgc2V0W3V8Z11pZC4gSXQncyBl
bmZvcmNlZCBieQ0KKyAqIAljdXJyZW50LT5wcm90ZmxhZ3MgJiBQUl9GTEFH
U19DT1JFDQogICogZmllbGQsIHdoaWNoIGFsc28gbWFrZXMgc3VyZSB0aGUg
Y29yZS1kdW1wcyB3b24ndCBiZSByZWN1cnNpdmUgaWYgdGhlDQogICogZHVt
cGluZyBvZiB0aGUgcHJvY2VzcyByZXN1bHRzIGluIGFub3RoZXIgZXJyb3Iu
Lg0KICAqLw0KQEAgLTEwNiw5ICsxMDcsMTAgQEANCiAjICAgICAgIGRlZmlu
ZSBTVEFSVF9TVEFDSyh1KSAgICh1LnN0YXJ0X3N0YWNrKQ0KICNlbmRpZg0K
IA0KLQlpZiAoIWN1cnJlbnQtPmR1bXBhYmxlIHx8IGF0b21pY19yZWFkKCZj
dXJyZW50LT5tbS0+Y291bnQpICE9IDEpDQorCWlmICgoY3VycmVudC0+cHJv
dGZsYWdzICYgUFJfRkxBR1NfQ09SRSkNCisJICAgIHx8IGF0b21pY19yZWFk
KCZjdXJyZW50LT5tbS0+Y291bnQpICE9IDEpDQogCQlyZXR1cm4gMDsNCi0J
Y3VycmVudC0+ZHVtcGFibGUgPSAwOw0KKwljdXJyZW50LT5wcm90ZmxhZ3Mg
fD0gUFJfRkxBR1NfQ09SRTsNCiANCiAvKiBTZWUgaWYgd2UgaGF2ZSBlbm91
Z2ggcm9vbSB0byB3cml0ZSB0aGUgdXBhZ2UuICAqLw0KIAlpZiAoY3VycmVu
dC0+cmxpbVtSTElNSVRfQ09SRV0ucmxpbV9jdXIgPCBQQUdFX1NJWkUpDQpk
aWZmIC1ydSBsaW51eC0yLjMuMTAtY2xlYW4vZnMvYmluZm10X2VsZi5jIGxp
bnV4LTIuMy4xMC9mcy9iaW5mbXRfZWxmLmMNCi0tLSBsaW51eC0yLjMuMTAt
Y2xlYW4vZnMvYmluZm10X2VsZi5jCVR1ZSBKdWwgIDYgMDM6NTk6NTUgMTk5
OQ0KKysrIGxpbnV4LTIuMy4xMC9mcy9iaW5mbXRfZWxmLmMJVHVlIEp1bCAy
MCAxOTo1NTo0MSAxOTk5DQpAQCAtMTA1OCwxMSArMTA1OCwxMSBAQA0KIAll
bGZfZnByZWdzZXRfdCBmcHU7CQkvKiBOVF9QUkZQUkVHICovDQogCXN0cnVj
dCBlbGZfcHJwc2luZm8gcHNpbmZvOwkvKiBOVF9QUlBTSU5GTyAqLw0KIA0K
LQlpZiAoIWN1cnJlbnQtPmR1bXBhYmxlIHx8DQorCWlmICgoY3VycmVudC0+
cHJvdGZsYWdzICYgUFJfRkxBR1NfQ09SRSkgfHwNCiAJICAgIGxpbWl0IDwg
RUxGX0VYRUNfUEFHRVNJWkUgfHwNCiAJICAgIGF0b21pY19yZWFkKCZjdXJy
ZW50LT5tbS0+Y291bnQpICE9IDEpDQogCQlyZXR1cm4gMDsNCi0JY3VycmVu
dC0+ZHVtcGFibGUgPSAwOw0KKwljdXJyZW50LT5wcm90ZmxhZ3MgfD0gUFJf
RkxBR1NfQ09SRTsNCiANCiAjaWZuZGVmIENPTkZJR19CSU5GTVRfRUxGDQog
CU1PRF9JTkNfVVNFX0NPVU5UOw0KZGlmZiAtcnUgbGludXgtMi4zLjEwLWNs
ZWFuL2ZzL2V4ZWMuYyBsaW51eC0yLjMuMTAvZnMvZXhlYy5jDQotLS0gbGlu
dXgtMi4zLjEwLWNsZWFuL2ZzL2V4ZWMuYwlUdWUgSnVsICA2IDA0OjM0OjMx
IDE5OTkNCisrKyBsaW51eC0yLjMuMTAvZnMvZXhlYy5jCVR1ZSBKdWwgMjAg
MTk6NTg6MzQgMTk5OQ0KQEAgLTUwMiw3ICs1MDIsNyBAQA0KIAlyZWxlYXNl
X29sZF9zaWduYWxzKG9sZHNpZyk7DQogDQogCWlmIChjdXJyZW50LT5ldWlk
ID09IGN1cnJlbnQtPnVpZCAmJiBjdXJyZW50LT5lZ2lkID09IGN1cnJlbnQt
PmdpZCkNCi0JCWN1cnJlbnQtPmR1bXBhYmxlID0gMTsNCisJCWN1cnJlbnQt
PnByb3RmbGFncyA9IDA7DQogCW5hbWUgPSBicHJtLT5maWxlbmFtZTsNCiAJ
Zm9yIChpPTA7IChjaCA9ICoobmFtZSsrKSkgIT0gJ1wwJzspIHsNCiAJCWlm
IChjaCA9PSAnLycpDQpAQCAtNTE1LDkgKzUxNSwxMSBAQA0KIA0KIAlmbHVz
aF90aHJlYWQoKTsNCiANCi0JaWYgKGJwcm0tPmVfdWlkICE9IGN1cnJlbnQt
PmV1aWQgfHwgYnBybS0+ZV9naWQgIT0gY3VycmVudC0+ZWdpZCB8fCANCi0J
ICAgIHBlcm1pc3Npb24oYnBybS0+ZGVudHJ5LT5kX2lub2RlLE1BWV9SRUFE
KSkNCi0JCWN1cnJlbnQtPmR1bXBhYmxlID0gMDsNCisJaWYgKGJwcm0tPmVf
dWlkICE9IGN1cnJlbnQtPmV1aWQgfHwgYnBybS0+ZV9naWQgIT0gY3VycmVu
dC0+ZWdpZCkNCisJCWN1cnJlbnQtPnByb3RmbGFncyA9IFBSX0ZMQUdTX0FM
TDsNCisNCisJaWYgKHBlcm1pc3Npb24oYnBybS0+ZGVudHJ5LT5kX2lub2Rl
LE1BWV9SRUFEKSkNCisJCWN1cnJlbnQtPnByb3RmbGFncyB8PSAoUFJfRkxB
R1NfQ09SRSB8IFBSX0ZMQUdTX1BUUkFDRSk7DQogDQogCWZsdXNoX3NpZ25h
bF9oYW5kbGVycyhjdXJyZW50KTsNCiAJZmx1c2hfb2xkX2ZpbGVzKGN1cnJl
bnQtPmZpbGVzKTsNCkBAIC02ODQsNyArNjg2LDcgQEANCiAgICAgICAgIGN1
cnJlbnQtPnNnaWQgPSBjdXJyZW50LT5lZ2lkID0gY3VycmVudC0+ZnNnaWQg
PSBicHJtLT5lX2dpZDsNCiAgICAgICAgIGlmIChjdXJyZW50LT5ldWlkICE9
IGN1cnJlbnQtPnVpZCB8fCBjdXJyZW50LT5lZ2lkICE9IGN1cnJlbnQtPmdp
ZCB8fA0KIAkgICAgIWNhcF9pc3N1YnNldChuZXdfcGVybWl0dGVkLCBjdXJy
ZW50LT5jYXBfcGVybWl0dGVkKSkNCi0gICAgICAgICAgICAgICAgY3VycmVu
dC0+ZHVtcGFibGUgPSAwOw0KKyAgICAgICAgICAgICAgICBjdXJyZW50LT5w
cm90ZmxhZ3MgPSBQUl9GTEFHU19BTEw7DQogfQ0KIA0KIA0KZGlmZiAtcnUg
bGludXgtMi4zLjEwLWNsZWFuL2ZzL3Byb2MvYXJyYXkuYyBsaW51eC0yLjMu
MTAvZnMvcHJvYy9hcnJheS5jDQotLS0gbGludXgtMi4zLjEwLWNsZWFuL2Zz
L3Byb2MvYXJyYXkuYwlTYXQgSnVsICAzIDIwOjA0OjEyIDE5OTkNCisrKyBs
aW51eC0yLjMuMTAvZnMvcHJvYy9hcnJheS5jCVR1ZSBKdWwgMjAgMjA6MTY6
MTggMTk5OQ0KQEAgLTEzNzUsNyArMTM4Niw3IEBADQogCXAgPSBmaW5kX3Rh
c2tfYnlfcGlkKHBpZCk7DQogCWlmIChwKSB7DQogCQlldWlkPXAtPmV1aWQ7
DQotCQlvayA9IHAtPmR1bXBhYmxlOw0KKwkJb2sgPSAhcC0+cHJvdGZsYWdz
Ow0KIAkJaWYoIWNhcF9pc3N1YnNldChwLT5jYXBfcGVybWl0dGVkLCBjdXJy
ZW50LT5jYXBfcGVybWl0dGVkKSkNCiAJCQlvaz0wOwkJCQ0KIAkJaWYoIXAt
Pm1tKQkvKiBTY29vYnkgc2Nvb2J5IGRvbyB3aGVyZSBhcmUgeW91ID8gKi8N
CmRpZmYgLXJ1IGxpbnV4LTIuMy4xMC1jbGVhbi9mcy9wcm9jL2Jhc2UuYyBs
aW51eC0yLjMuMTAvZnMvcHJvYy9iYXNlLmMNCi0tLSBsaW51eC0yLjMuMTAt
Y2xlYW4vZnMvcHJvYy9iYXNlLmMJU2F0IEp1biAyNiAyMDowNDozOSAxOTk5
DQorKysgbGludXgtMi4zLjEwL2ZzL3Byb2MvYmFzZS5jCVR1ZSBKdWwgMjAg
MjA6MDE6NTYgMTk5OQ0KQEAgLTY5LDcgKzY5LDcgQEANCiAJaWYgKGZpbGwg
JiYgKHAgPSBmaW5kX3Rhc2tfYnlfcGlkKHBpZCkpICE9IE5VTEwpIHsNCiAJ
CXVpZF90IHVpZCA9IDA7DQogCQlnaWRfdCBnaWQgPSAwOw0KLQkJaWYgKHAt
PmR1bXBhYmxlIHx8IGlubyA9PSBQUk9DX1BJRF9JTk8pIHsNCisJCWlmICgo
IXAtPnByb3RmbGFncykgfHwgaW5vID09IFBST0NfUElEX0lOTykgew0KIAkJ
CXVpZCA9IHAtPmV1aWQ7DQogCQkJZ2lkID0gcC0+ZWdpZDsNCiAJCX0NCmRp
ZmYgLXJ1IGxpbnV4LTIuMy4xMC1jbGVhbi9mcy9wcm9jL2lub2RlLmMgbGlu
dXgtMi4zLjEwL2ZzL3Byb2MvaW5vZGUuYw0KLS0tIGxpbnV4LTIuMy4xMC1j
bGVhbi9mcy9wcm9jL2lub2RlLmMJU3VuIEp1bCAgNCAxODoxODo1MiAxOTk5
DQorKysgbGludXgtMi4zLjEwL2ZzL3Byb2MvaW5vZGUuYwlUdWUgSnVsIDIw
IDIwOjAyOjE2IDE5OTkNCkBAIC0zOTMsNyArMzkzLDcgQEANCiAJCWdvdG8g
b3V0X3VubG9jazsNCiANCiAJaW5vICY9IDB4MDAwMGZmZmY7DQotCWlmIChp
bm8gPT0gUFJPQ19QSURfSU5PIHx8IHAtPmR1bXBhYmxlKSB7DQorCWlmIChp
bm8gPT0gUFJPQ19QSURfSU5PIHx8ICghcC0+cHJvdGZsYWdzKSkgew0KIAkJ
aW5vZGUtPmlfdWlkID0gcC0+ZXVpZDsNCiAJCWlub2RlLT5pX2dpZCA9IHAt
PmVnaWQ7DQogCX0NCmRpZmYgLXJ1IGxpbnV4LTIuMy4xMC1jbGVhbi9pbmNs
dWRlL2xpbnV4L3ByY3RsLmggbGludXgtMi4zLjEwL2luY2x1ZGUvbGludXgv
cHJjdGwuaA0KLS0tIGxpbnV4LTIuMy4xMC1jbGVhbi9pbmNsdWRlL2xpbnV4
L3ByY3RsLmgJTW9uIFNlcCAyMiAyMjo1NTo1OSAxOTk3DQorKysgbGludXgt
Mi4zLjEwL2luY2x1ZGUvbGludXgvcHJjdGwuaAlUdWUgSnVsIDIwIDE5OjM2
OjU0IDE5OTkNCkBAIC00LDYgKzQsNyBAQA0KIC8qICBWYWx1ZXMgdG8gcGFz
cyBhcyBmaXJzdCBhcmd1bWVudCB0byBwcmN0bCgpICAqLw0KIA0KICNkZWZp
bmUgUFJfU0VUX1BERUFUSFNJRyAgMSAgLyogIFNlY29uZCBhcmcgaXMgYSBz
aWduYWwgICovDQorI2RlZmluZSBQUl9TRVRfUFJPVEZMQUdTICAyICAvKiAg
U2Vjb25kIGFyZyBpcyB8ZWQgd2l0aCBjdXJyZW50LT5wcm90ZmxhZ3MgKi8N
CiANCiANCiAjZW5kaWYgLyogX0xJTlVYX1BSQ1RMX0ggKi8NCmRpZmYgLXJ1
IGxpbnV4LTIuMy4xMC1jbGVhbi9pbmNsdWRlL2xpbnV4L3NjaGVkLmggbGlu
dXgtMi4zLjEwL2luY2x1ZGUvbGludXgvc2NoZWQuaA0KLS0tIGxpbnV4LTIu
My4xMC1jbGVhbi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgJV2VkIEp1bCAgNyAx
NzoyMDo0NSAxOTk5DQorKysgbGludXgtMi4zLjEwL2luY2x1ZGUvbGludXgv
c2NoZWQuaAlUdWUgSnVsIDIwIDIwOjU1OjU0IDE5OTkNCkBAIC0yNTEsNyAr
MjUxLDcgQEANCiAJaW50IHBkZWF0aF9zaWduYWw7ICAvKiAgVGhlIHNpZ25h
bCBzZW50IHdoZW4gdGhlIHBhcmVudCBkaWVzICAqLw0KIAkvKiA/Pz8gKi8N
CiAJdW5zaWduZWQgbG9uZyBwZXJzb25hbGl0eTsNCi0JaW50IGR1bXBhYmxl
OjE7DQorCXVuc2lnbmVkIGxvbmcgcHJvdGZsYWdzOwkvKiBwZXItcHJvY2Vz
cyBwcm90ZWN0aW9uIChmbGFncyBkZWZpbmVkIGJlbG93KSAqLw0KIAlpbnQg
ZGlkX2V4ZWM6MTsNCiAJcGlkX3QgcGlkOw0KIAlwaWRfdCBwZ3JwOw0KQEAg
LTMzOCw2ICszMzgsMTcgQEANCiANCiAjZGVmaW5lIFBGX1VTRURGUFUJMHgw
MDEwMDAwMAkvKiB0YXNrIHVzZWQgRlBVIHRoaXMgcXVhbnR1bSAoU01QKSAq
Lw0KICNkZWZpbmUgUEZfRFRSQUNFCTB4MDAyMDAwMDAJLyogZGVsYXllZCB0
cmFjZSAodXNlZCBvbiBtNjhrLCBpMzg2KSAqLw0KKw0KKy8qDQorICogUHJv
Y2VzcyBzZWxmLWRlZmVuY2UgZmxhZ3MuICBQcm9jZXNzZXMgY2FuIHByb3Rl
Y3QgdGhlbXNlbHZlcyBmcm9tDQorICogcHRyYWNlKCksIGtpbGwoKSwgJmMN
CisgKi8NCisjZGVmaW5lIFBSX0ZMQUdTX1BUUkFDRQkweDAwMDAwMDAxCS8q
IENhbid0IHB0cmFjZSgpIG1lICovDQorI2RlZmluZSBQUl9GTEFHU19TSUdO
QUwJMHgwMDAwMDAwMgkvKiBDYW4ndCBraWxsIG1lICovDQorI2RlZmluZSBQ
Ul9GTEFHU19DT1JFCTB4MDAwMDAwMDQJLyogQ2FuIEkgZHVtcCBjb3JlPyAq
Lw0KKyNkZWZpbmUgUFJfRkxBR1NfTUFTSwkweDAwMDAwMDA3DQorI2RlZmlu
ZSBQUl9GTEFHU19BTEwJUFJfRkxBR1NfTUFTSw0KKw0KIA0KIC8qDQogICog
TGltaXQgdGhlIHN0YWNrIGJ5IHRvIHNvbWUgc2FuZSBkZWZhdWx0OiByb290
IGNhbiBhbHdheXMNCmRpZmYgLXJ1IGxpbnV4LTIuMy4xMC1jbGVhbi9rZXJu
ZWwvc2lnbmFsLmMgbGludXgtMi4zLjEwL2tlcm5lbC9zaWduYWwuYw0KLS0t
IGxpbnV4LTIuMy4xMC1jbGVhbi9rZXJuZWwvc2lnbmFsLmMJVHVlIEp1bCAg
NiAwNDowMjoxMCAxOTk5DQorKysgbGludXgtMi4zLjEwL2tlcm5lbC9zaWdu
YWwuYwlUdWUgSnVsIDIwIDIwOjM0OjA4IDE5OTkNCkBAIC0yNjksNiArMjY5
LDkgQEANCiAJICAgICYmICFjYXBhYmxlKENBUF9LSUxMKSkNCiAJCWdvdG8g
b3V0X25vbG9jazsNCiANCisJaWYoKHQtPnByb3RmbGFncyAmIFBSX0ZMQUdT
X1NJR05BTCkgJiYgIWNhcGFibGUoQ0FQX0tJTEwpKQ0KKwkJZ290byBvdXRf
bm9sb2NrOw0KKw0KIAkvKiBUaGUgbnVsbCBzaWduYWwgaXMgYSBwZXJtaXNz
aW9ucyBhbmQgcHJvY2VzcyBleGlzdGFuY2UgcHJvYmUuDQogCSAgIE5vIHNp
Z25hbCBpcyBhY3R1YWxseSBkZWxpdmVyZWQuICBTYW1lIGdvZXMgZm9yIHpv
bWJpZXMuICovDQogCXJldCA9IDA7DQpkaWZmIC1ydSBsaW51eC0yLjMuMTAt
Y2xlYW4va2VybmVsL3N5cy5jIGxpbnV4LTIuMy4xMC9rZXJuZWwvc3lzLmMN
Ci0tLSBsaW51eC0yLjMuMTAtY2xlYW4va2VybmVsL3N5cy5jCVNhdCBKdWwg
IDMgMjA6MDQ6MTIgMTk5OQ0KKysrIGxpbnV4LTIuMy4xMC9rZXJuZWwvc3lz
LmMJVHVlIEp1bCAyMCAxOTo0NjozMSAxOTk5DQpAQCAtMjgxLDcgKzI4MSw3
IEBADQogCQljdXJyZW50LT5zZ2lkID0gY3VycmVudC0+ZWdpZDsNCiAJY3Vy
cmVudC0+ZnNnaWQgPSBjdXJyZW50LT5lZ2lkOw0KIAlpZiAoY3VycmVudC0+
ZWdpZCAhPSBvbGRfZWdpZCkNCi0JCWN1cnJlbnQtPmR1bXBhYmxlID0gMDsN
CisJCWN1cnJlbnQtPnByb3RmbGFncyA9IFBSX0ZMQUdTX0FMTDsNCiAJcmV0
dXJuIDA7DQogfQ0KIA0KQEAgLTMwMiw3ICszMDIsNyBAQA0KIAkJcmV0dXJu
IC1FUEVSTTsNCiANCiAJaWYgKGN1cnJlbnQtPmVnaWQgIT0gb2xkX2VnaWQp
DQotCQljdXJyZW50LT5kdW1wYWJsZSA9IDA7DQorCQljdXJyZW50LT5wcm90
ZmxhZ3MgPSBQUl9GTEFHU19BTEw7DQogCXJldHVybiAwOw0KIH0NCiAgIA0K
QEAgLTM4NSw3ICszODUsNyBAQA0KIAkJY3VycmVudC0+c3VpZCA9IGN1cnJl
bnQtPmV1aWQ7DQogCWN1cnJlbnQtPmZzdWlkID0gY3VycmVudC0+ZXVpZDsN
CiAJaWYgKGN1cnJlbnQtPmV1aWQgIT0gb2xkX2V1aWQpDQotCQljdXJyZW50
LT5kdW1wYWJsZSA9IDA7DQorCQljdXJyZW50LT5wcm90ZmxhZ3MgPSBQUl9G
TEFHU19BTEw7DQogDQogCWlmKG5ld19ydWlkICE9IG9sZF9ydWlkKSB7DQog
CQkvKiBXaGF0IGlmIGEgcHJvY2VzcyBzZXRyZXVpZCgpJ3MgYW5kIHRoaXMg
YnJpbmdzIHRoZQ0KQEAgLTQzMyw3ICs0MzMsNyBAQA0KIAkJcmV0dXJuIC1F
UEVSTTsNCiANCiAJaWYgKGN1cnJlbnQtPmV1aWQgIT0gb2xkX2V1aWQpDQot
CQljdXJyZW50LT5kdW1wYWJsZSA9IDA7DQorCQljdXJyZW50LT5wcm90Zmxh
Z3MgPSBQUl9GTEFHU19BTEw7DQogDQogICAgICAgIGlmIChuZXdfcnVpZCAh
PSBvbGRfcnVpZCkgew0KIAkJLyogU2VlIGNvbW1lbnQgYWJvdmUgYWJvdXQg
TlBST0MgcmxpbWl0IGlzc3Vlcy4uLiAqLw0KQEAgLTQ3OSw3ICs0NzksNyBA
QA0KIAl9DQogCWlmIChldWlkICE9ICh1aWRfdCkgLTEpIHsNCiAJCWlmIChl
dWlkICE9IGN1cnJlbnQtPmV1aWQpDQotCQkJY3VycmVudC0+ZHVtcGFibGUg
PSAwOw0KKwkJCWN1cnJlbnQtPnByb3RmbGFncyA9IFBSX0ZMQUdTX0FMTDsN
CiAJCWN1cnJlbnQtPmV1aWQgPSBldWlkOw0KIAkJY3VycmVudC0+ZnN1aWQg
PSBldWlkOw0KIAl9DQpAQCAtNTI0LDcgKzUyNCw3IEBADQogCQljdXJyZW50
LT5naWQgPSByZ2lkOw0KIAlpZiAoZWdpZCAhPSAoZ2lkX3QpIC0xKSB7DQog
CQlpZiAoZWdpZCAhPSBjdXJyZW50LT5lZ2lkKQ0KLQkJCWN1cnJlbnQtPmR1
bXBhYmxlID0gMDsNCisJCQljdXJyZW50LT5wcm90ZmxhZ3MgPSBQUl9GTEFH
U19BTEw7DQogCQljdXJyZW50LT5lZ2lkID0gZWdpZDsNCiAJCWN1cnJlbnQt
PmZzZ2lkID0gZWdpZDsNCiAJfQ0KQEAgLTU2MSw3ICs1NjEsNyBAQA0KIAkg
ICAgY2FwYWJsZShDQVBfU0VUVUlEKSkNCiAJCWN1cnJlbnQtPmZzdWlkID0g
dWlkOw0KIAlpZiAoY3VycmVudC0+ZnN1aWQgIT0gb2xkX2ZzdWlkKQ0KLQkJ
Y3VycmVudC0+ZHVtcGFibGUgPSAwOw0KKwkJY3VycmVudC0+cHJvdGZsYWdz
ID0gUFJfRkxBR1NfQUxMOw0KIA0KIAkvKiBXZSBlbXVsYXRlIGZzdWlkIGJ5
IGVzc2VudGlhbGx5IGRvaW5nIGEgc2NhbGVkLWRvd24gdmVyc2lvbg0KIAkg
KiBvZiB3aGF0IHdlIGRpZCBpbiBzZXRyZXN1aWQgYW5kIGZyaWVuZHMuIEhv
d2V2ZXIsIHdlIG9ubHkNCkBAIC01OTgsNyArNTk4LDcgQEANCiAJICAgIGNh
cGFibGUoQ0FQX1NFVEdJRCkpDQogCQljdXJyZW50LT5mc2dpZCA9IGdpZDsN
CiAJaWYgKGN1cnJlbnQtPmZzZ2lkICE9IG9sZF9mc2dpZCkNCi0JCWN1cnJl
bnQtPmR1bXBhYmxlID0gMDsNCisJCWN1cnJlbnQtPnByb3RmbGFncyA9IFBS
X0ZMQUdTX0FMTDsNCiANCiAJcmV0dXJuIG9sZF9mc2dpZDsNCiB9DQpAQCAt
OTg2LDIyICs5ODYsMjUgQEANCiBhc21saW5rYWdlIGludCBzeXNfcHJjdGwo
aW50IG9wdGlvbiwgdW5zaWduZWQgbG9uZyBhcmcyLCB1bnNpZ25lZCBsb25n
IGFyZzMsDQogCQkJIHVuc2lnbmVkIGxvbmcgYXJnNCwgdW5zaWduZWQgbG9u
ZyBhcmc1KQ0KIHsNCi0JaW50IGVycm9yID0gMDsNCisJaW50IHJlcyA9IDA7
DQogCWludCBzaWc7DQogDQogCXN3aXRjaCAob3B0aW9uKSB7DQogCQljYXNl
IFBSX1NFVF9QREVBVEhTSUc6DQogCQkJc2lnID0gYXJnMjsNCiAJCQlpZiAo
c2lnID4gX05TSUcpIHsNCi0JCQkJZXJyb3IgPSAtRUlOVkFMOw0KKwkJCQly
ZXMgPSAtRUlOVkFMOw0KIAkJCQlicmVhazsNCiAJCQl9DQogCQkJY3VycmVu
dC0+cGRlYXRoX3NpZ25hbCA9IHNpZzsNCiAJCQlicmVhazsNCisJCWNhc2Ug
UFJfU0VUX1BST1RGTEFHUzoNCisJCQlyZXMgPSAoY3VycmVudC0+cHJvdGZs
YWdzIHw9IChhcmcyICYgUFJfRkxBR1NfTUFTSykpOw0KKwkJCWJyZWFrOw0K
IAkJZGVmYXVsdDoNCi0JCQllcnJvciA9IC1FSU5WQUw7DQorCQkJcmVzID0g
LUVJTlZBTDsNCiAJCQlicmVhazsNCiAJfQ0KLQlyZXR1cm4gZXJyb3I7DQor
CXJldHVybiByZXM7DQogfQ0KIA0K
--27511946-1519860860-932552532=:9430--

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/