Date: Tue, 10 Dec 2002 11:10:03 -0800 (PST) From: "Peter Edwards" <pmedwards@eircom.net> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/45994: Pages marked read-only via mprotect are zeroed in core files Message-ID: <200212101910.gBAJA3AC010009@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/45994; it has been noted by GNATS. From: "Peter Edwards" <pmedwards@eircom.net> To: Archie Cobbs <archie@packetdesign.com>, Peter Edwards <pmedwards@eircom.net> Cc: freebsd-gnats-submit@freebsd.org Subject: Re: kern/45994: Pages marked read-only via mprotect are zeroed in core files Date: Tue, 10 Dec 2002 18:58:30 +0000 This is a multi-part message in MIME format. ---------O55DF2D7B4YK0IC6O5NW1WAD Content-Type: text/plain Content-Transfer-Encoding: 7bit Ok. I had a quick look, and it was easier than I thought. The following patch (which should be applied _instead_ of the noddy one I previously posted) Does the following 1: Update rtld_elf's map_object to set MAP_NOCORE when mmap()ing readonly sections. 2: Causes elf_load_section (kern/imgact_elf.c) to do the same (by passing MAP_DISABLE_COREDUMP to the "COW" flags of vm_map_insert()) 3: Reverses the polarity of the sysctl from the old patch, so, by default the corefiles _include_ readonly pages. A quick test shows that both a static and dynamic executable produce corefiles of the same size, irrespective of the setting of this flag, and a simple program that mmaps a chunk of anonymous readonly data is grows and shrinks by the size of the extra mmaped data, depending on the setting of the sysctl. Archie, I'd appreciate any feedback if you install this patch. I'll be running a kernel with it here, anyway. Reviews from any VM hackers would be probably an idea, before committing :-) Cheers, Peter. ---------O55DF2D7B4YK0IC6O5NW1WAD Content-Type: application/octet-stream Content-Disposition: attachment; filename="coredump.diff" Content-Transfer-Encoding: base64 SW5kZXg6IGxpYmV4ZWMvcnRsZC1lbGYvbWFwX29iamVjdC5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9wdWIvRnJlZUJTRC9kZXZlbG9w bWVudC9GcmVlQlNELUNWUy9zcmMvbGliZXhlYy9ydGxkLWVsZi9tYXBfb2Jq ZWN0LmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNy4yLjEKZGlmZiAtdSAt cjEuNy4yLjEgbWFwX29iamVjdC5jCi0tLSBsaWJleGVjL3J0bGQtZWxmL21h cF9vYmplY3QuYwkyOSBOb3YgMjAwMiAxNjowNToxNCAtMDAwMAkxLjcuMi4x CisrKyBsaWJleGVjL3J0bGQtZWxmL21hcF9vYmplY3QuYwkxMCBEZWMgMjAw MiAxNTowMjo1OSAtMDAwMApAQCAtMzcsNyArMzcsOCBAQAogCiAjaW5jbHVk ZSAicnRsZC5oIgogCi1zdGF0aWMgaW50IHByb3RmbGFncyhpbnQpOwkvKiBF bGYgZmxhZ3MgLT4gbW1hcCBwcm90ZWN0aW9uICovCitzdGF0aWMgaW50IGNv bnZlcnRfcHJvdChpbnQpOwkvKiBFbGYgZmxhZ3MgLT4gbW1hcCBwcm90ZWN0 aW9uICovCitzdGF0aWMgaW50IGNvbnZlcnRfZmxhZ3MoaW50KTsgLyogRWxm IGZsYWdzIC0+IG1tYXAgZmxhZ3MgKi8KIAogLyoKICAqIE1hcCBhIHNoYXJl ZCBvYmplY3QgaW50byBtZW1vcnkuICBUaGUgImZkIiBhcmd1bWVudCBpcyBh IGZpbGUgZGVzY3JpcHRvciwKQEAgLTc0LDYgKzc1LDcgQEAKICAgICBFbGZf QWRkciBkYXRhX3ZsaW1pdDsKICAgICBjYWRkcl90IGRhdGFfYWRkcjsKICAg ICBpbnQgZGF0YV9wcm90OworICAgIGludCBkYXRhX2ZsYWdzOwogICAgIEVs Zl9BZGRyIGNsZWFyX3ZhZGRyOwogICAgIGNhZGRyX3QgY2xlYXJfYWRkcjsK ICAgICBjYWRkcl90IGNsZWFyX3BhZ2U7CkBAIC0xODgsOCArMTkwLDggQEAK ICAgICBtYXBzaXplID0gYmFzZV92bGltaXQgLSBiYXNlX3ZhZGRyOwogICAg IGJhc2VfYWRkciA9IHUuaGRyLmVfdHlwZSA9PSBFVF9FWEVDID8gKGNhZGRy X3QpIGJhc2VfdmFkZHIgOiBOVUxMOwogCi0gICAgbWFwYmFzZSA9IG1tYXAo YmFzZV9hZGRyLCBtYXBzaXplLCBwcm90ZmxhZ3Moc2Vnc1swXS0+cF9mbGFn cyksCi0gICAgICBNQVBfUFJJVkFURSwgZmQsIGJhc2Vfb2Zmc2V0KTsKKyAg ICBtYXBiYXNlID0gbW1hcChiYXNlX2FkZHIsIG1hcHNpemUsIGNvbnZlcnRf cHJvdChzZWdzWzBdLT5wX2ZsYWdzKSwKKyAgICAgIGNvbnZlcnRfZmxhZ3Mo c2Vnc1swXS0+cF9mbGFncyksIGZkLCBiYXNlX29mZnNldCk7CiAgICAgaWYg KG1hcGJhc2UgPT0gKGNhZGRyX3QpIC0xKSB7CiAJX3J0bGRfZXJyb3IoIiVz OiBtbWFwIG9mIGVudGlyZSBhZGRyZXNzIHNwYWNlIGZhaWxlZDogJXMiLAog CSAgcGF0aCwgc3RyZXJyb3IoZXJybm8pKTsKQEAgLTIwOCwxMCArMjEwLDEx IEBACiAJZGF0YV92YWRkciA9IHRydW5jX3BhZ2Uoc2Vnc1tpXS0+cF92YWRk cik7CiAJZGF0YV92bGltaXQgPSByb3VuZF9wYWdlKHNlZ3NbaV0tPnBfdmFk ZHIgKyBzZWdzW2ldLT5wX2ZpbGVzeik7CiAJZGF0YV9hZGRyID0gbWFwYmFz ZSArIChkYXRhX3ZhZGRyIC0gYmFzZV92YWRkcik7Ci0JZGF0YV9wcm90ID0g cHJvdGZsYWdzKHNlZ3NbaV0tPnBfZmxhZ3MpOworCWRhdGFfcHJvdCA9IGNv bnZlcnRfcHJvdChzZWdzW2ldLT5wX2ZsYWdzKTsKKwlkYXRhX2ZsYWdzID0g Y29udmVydF9mbGFncyhzZWdzW2ldLT5wX2ZsYWdzKSB8IE1BUF9GSVhFRDsK IAkvKiBEbyBub3QgY2FsbCBtbWFwIG9uIHRoZSBmaXJzdCBzZWdtZW50IC0g dGhpcyBpcyByZWR1bmRhbnQgKi8KIAlpZiAoaSAmJiBtbWFwKGRhdGFfYWRk ciwgZGF0YV92bGltaXQgLSBkYXRhX3ZhZGRyLCBkYXRhX3Byb3QsCi0JICBN QVBfUFJJVkFURXxNQVBfRklYRUQsIGZkLCBkYXRhX29mZnNldCkgPT0gKGNh ZGRyX3QpIC0xKSB7CisJICBkYXRhX2ZsYWdzLCBmZCwgZGF0YV9vZmZzZXQp ID09IChjYWRkcl90KSAtMSkgewogCSAgICBfcnRsZF9lcnJvcigiJXM6IG1t YXAgb2YgZGF0YSBmYWlsZWQ6ICVzIiwgcGF0aCwgc3RyZXJyb3IoZXJybm8p KTsKIAkgICAgcmV0dXJuIE5VTEw7CiAJfQpAQCAtMzE0LDcgKzMxNyw3IEBA CiAgKiBmbGFncyBmb3IgTU1BUC4KICAqLwogc3RhdGljIGludAotcHJvdGZs YWdzKGludCBlbGZmbGFncykKK2NvbnZlcnRfcHJvdChpbnQgZWxmZmxhZ3Mp CiB7CiAgICAgaW50IHByb3QgPSAwOwogICAgIGlmIChlbGZmbGFncyAmIFBG X1IpCkBAIC0zMjQsNCArMzI3LDE4IEBACiAgICAgaWYgKGVsZmZsYWdzICYg UEZfWCkKIAlwcm90IHw9IFBST1RfRVhFQzsKICAgICByZXR1cm4gcHJvdDsK K30KKworc3RhdGljIGludAorY29udmVydF9mbGFncyhpbnQgZWxmZmxhZ3Mp Cit7CisgICAgaW50IGZsYWdzID0gTUFQX1BSSVZBVEU7IC8qIEFsbCBtYXBw aW5ncyBhcmUgcHJpdmF0ZSAqLworCisgICAgLyoKKyAgICAgKiBSZWFkb25s eSBtYXBwaW5ncyBhcmUgbWFya2VkICJNQVBfTk9DT1JFIiwgYmVjYXVzZSB0 aGV5IGNhbiBiZQorICAgICAqIHJlY29uc3RydWN0ZWQgYnkgYSBkZWJ1Z2dl ci4KKyAgICAgKi8KKyAgICBpZiAoIShlbGZmbGFncyAmIFBGX1cpKQorCWZs YWdzIHw9IE1BUF9OT0NPUkU7CisgICAgcmV0dXJuIGZsYWdzOwogfQpJbmRl eDogc3lzL2tlcm4vaW1nYWN0X2VsZi5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9wdWIvRnJlZUJTRC9kZXZlbG9wbWVudC9GcmVlQlNE LUNWUy9zcmMvc3lzL2tlcm4vaW1nYWN0X2VsZi5jLHYKcmV0cmlldmluZyBy ZXZpc2lvbiAxLjczLjIuMTEKZGlmZiAtdSAtcjEuNzMuMi4xMSBpbWdhY3Rf ZWxmLmMKLS0tIHN5cy9rZXJuL2ltZ2FjdF9lbGYuYwk5IFNlcCAyMDAyIDE3 OjM4OjQ3IC0wMDAwCTEuNzMuMi4xMQorKysgc3lzL2tlcm4vaW1nYWN0X2Vs Zi5jCTEwIERlYyAyMDAyIDE4OjQ4OjQ3IC0wMDAwCkBAIC03OSw3ICs3OSwx MCBAQAogc3RhdGljIGludCBleGVjX2VsZl9pbWdhY3QgX19QKChzdHJ1Y3Qg aW1hZ2VfcGFyYW1zICppbWdwKSk7CiAKIHN0YXRpYyBpbnQgZWxmX3RyYWNl ID0gMDsKK3N0YXRpYyBpbnQgZWxmX2R1bXByZWFkb25seSA9IDA7CisKIFNZ U0NUTF9JTlQoX2RlYnVnLCBPSURfQVVUTywgZWxmX3RyYWNlLCBDVExGTEFH X1JXLCAmZWxmX3RyYWNlLCAwLCAiIik7CitTWVNDVExfSU5UKF9kZWJ1Zywg T0lEX0FVVE8sIGVsZl9kdW1wcmVhZG9ubHksIENUTEZMQUdfUlcsICZlbGZf ZHVtcHJlYWRvbmx5LCAwLCAiIik7CiAKIHN0YXRpYyBzdHJ1Y3Qgc3lzZW50 dmVjIGVsZl9mcmVlYnNkX3N5c3ZlYyA9IHsKICAgICAgICAgU1lTX01BWFNZ U0NBTEwsCkBAIC0xODUsNyArMTg4LDcgQEAKIHsKIAlzaXplX3QgbWFwX2xl bjsKIAl2bV9vZmZzZXRfdCBtYXBfYWRkcjsKLQlpbnQgZXJyb3IsIHJ2Owor CWludCBlcnJvciwgcnYsIGNvdzsKIAlzaXplX3QgY29weV9sZW47CiAJdm1f b2JqZWN0X3Qgb2JqZWN0OwogCXZtX29mZnNldF90IGZpbGVfYWRkcjsKQEAg LTIyNSw2ICsyMjgsMTEgQEAKIAogCWlmIChtYXBfbGVuICE9IDApIHsKIAkJ dm1fb2JqZWN0X3JlZmVyZW5jZShvYmplY3QpOworCisJCS8qIGNvdyBmbGFn czogZG9uJ3QgZHVtcCByZWFkb25seSBzZWN0aW9ucyBpbiBjb3JlICovCisJ CWNvdyA9IE1BUF9DT1BZX09OX1dSSVRFIHwgTUFQX1BSRUZBVUxUIHwKKwkJ ICAgIChwcm90ICYgVk1fUFJPVF9XUklURSA/IDAgOiBNQVBfRElTQUJMRV9D T1JFRFVNUCk7CisKIAkJdm1fbWFwX2xvY2soJnZtc3BhY2UtPnZtX21hcCk7 CiAJCXJ2ID0gdm1fbWFwX2luc2VydCgmdm1zcGFjZS0+dm1fbWFwLAogCQkJ CSAgICAgIG9iamVjdCwKQEAgLTIzMyw3ICsyNDEsNyBAQAogCQkJCSAgICAg IG1hcF9hZGRyICsgbWFwX2xlbiwvKiB2aXJ0dWFsIGVuZCAqLwogCQkJCSAg ICAgIHByb3QsCiAJCQkJICAgICAgVk1fUFJPVF9BTEwsCi0JCQkJICAgICAg TUFQX0NPUFlfT05fV1JJVEUgfCBNQVBfUFJFRkFVTFQpOworCQkJCSAgICAg IGNvdyk7CiAJCXZtX21hcF91bmxvY2soJnZtc3BhY2UtPnZtX21hcCk7CiAJ CWlmIChydiAhPSBLRVJOX1NVQ0NFU1MpIHsKIAkJCXZtX29iamVjdF9kZWFs bG9jYXRlKG9iamVjdCk7CkBAIC00OTMsNiArNTAxLDExIEBACiAJICogRnJv bSB0aGlzIHBvaW50IG9uLCB3ZSBtYXkgaGF2ZSByZXNvdXJjZXMgdGhhdCBu ZWVkIHRvIGJlIGZyZWVkLgogCSAqLwogCisJaWYgKChlcnJvciA9IGV4ZWNf ZXh0cmFjdF9zdHJpbmdzKGltZ3ApKSAhPSAwKQorCQlnb3RvIGZhaWw7CisK KwlleGVjX25ld192bXNwYWNlKGltZ3ApOworCiAJLyoKIAkgKiBZZWFoLCBJ J20gcGFyYW5vaWQuICBUaGVyZSBpcyBldmVyeSByZWFzb24gaW4gdGhlIHdv cmxkIHRvIGdldAogCSAqIFZURVhUIG5vdyBzaW5jZSBmcm9tIGhlcmUgb24g b3V0LCB0aGVyZSBhcmUgcGxhY2VzIHdlIGNhbiBoYXZlCkBAIC01MDMsMTEg KzUxNiw2IEBACiAJaW1ncC0+dnAtPnZfZmxhZyB8PSBWVEVYVDsKIAlzaW1w bGVfdW5sb2NrKCZpbWdwLT52cC0+dl9pbnRlcmxvY2spOwogCi0JaWYgKChl cnJvciA9IGV4ZWNfZXh0cmFjdF9zdHJpbmdzKGltZ3ApKSAhPSAwKQotCQln b3RvIGZhaWw7Ci0KLQlleGVjX25ld192bXNwYWNlKGltZ3ApOwotCiAJdm1z cGFjZSA9IGltZ3AtPnByb2MtPnBfdm1zcGFjZTsKIAogCWZvciAoaSA9IDA7 IGkgPCBoZHItPmVfcGhudW07IGkrKykgewpAQCAtODg3LDggKzg5NSw5IEBA CiAJCXZtX29iamVjdF90IG9iajsKIAogCQlpZiAoKGVudHJ5LT5lZmxhZ3Mg JiBNQVBfRU5UUllfSVNfU1VCX01BUCkgfHwKKwkJICAgIChlbGZfZHVtcHJl YWRvbmx5ICYmCiAJCSAgICAoZW50cnktPnByb3RlY3Rpb24gJiAoVk1fUFJP VF9SRUFEfFZNX1BST1RfV1JJVEUpKSAhPQotCQkgICAgKFZNX1BST1RfUkVB RHxWTV9QUk9UX1dSSVRFKSkKKwkJICAgIChWTV9QUk9UX1JFQUR8Vk1fUFJP VF9XUklURSkpKQogCQkJY29udGludWU7CiAKIAkJLyoKQEAgLTg5Niw4ICs5 MDUsMTAgQEAKIAkJKiogTUFQX05PQ09SRSBpcyBzZXQgaW4gbW1hcCgyKSBv ciBNQURWX05PQ09SRSBpbgogCQkqKiBtYWR2aXNlKDIpLgogCQkqLwotCQlp ZiAoZW50cnktPmVmbGFncyAmIE1BUF9FTlRSWV9OT0NPUkVEVU1QKQorCQlp ZiAoZW50cnktPmVmbGFncyAmIE1BUF9FTlRSWV9OT0NPUkVEVU1QKSB7CisJ CQlwcmludGYoImV4Y2x1ZGluZyBNQVBfRU5UUllfTk9DT1JFRFVNUCBzZWdt ZW50Iik7CiAJCQljb250aW51ZTsKKwkJfQogCiAJCWlmICgob2JqID0gZW50 cnktPm9iamVjdC52bV9vYmplY3QpID09IE5VTEwpCiAJCQljb250aW51ZTsK ---------O55DF2D7B4YK0IC6O5NW1WAD-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200212101910.gBAJA3AC010009>
