From owner-freebsd-dtrace@FreeBSD.ORG Fri Nov 15 20:31:29 2013 Return-Path: Delivered-To: freebsd-dtrace@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 390ABA5C for ; Fri, 15 Nov 2013 20:31:29 +0000 (UTC) Received: from mail-wi0-x234.google.com (mail-wi0-x234.google.com [IPv6:2a00:1450:400c:c05::234]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BB15C2379 for ; Fri, 15 Nov 2013 20:31:28 +0000 (UTC) Received: by mail-wi0-f180.google.com with SMTP id ey16so1546600wid.1 for ; Fri, 15 Nov 2013 12:31:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:content-type; bh=K1+2rCBz1hRILTxWCab00jXoyZaf2K26ZJtLSCiKTBs=; b=eO9ZdSIGAw96lOdw+NOIYQ9cqacs63mPmdAXIsi520IgumYyCV2LUsyKxzTIAyuHLA HYLKEEJzRGYMowdSUhqNQhzRWiIRnUKs8zcLZcNbmUCRid7kVumxcQSluKVR9In/7PK1 ZAvDMqTIqk7MiAHi9vhBzO+CGYsYbyLj9ywZ6aQUV4dGPb+hfyJFCfugK+0OTjD0MtkT 2RfD/wf1s6NPg9Qrd3EtTUThqr92E6xxjDqzCAyYv2TKZ7S8JkwOrpOX2jlc+kQWwf1A rChZirqE/RwSm+7NAxokrSyz+lKeaD4XzObcpAyMeC6m8/CJy01Bk2hbB9awJaKTe9Ci nV0w== MIME-Version: 1.0 X-Received: by 10.194.104.42 with SMTP id gb10mr8213166wjb.16.1384547487121; Fri, 15 Nov 2013 12:31:27 -0800 (PST) Sender: asomers@gmail.com Received: by 10.194.171.35 with HTTP; Fri, 15 Nov 2013 12:31:26 -0800 (PST) Date: Fri, 15 Nov 2013 13:31:26 -0700 X-Google-Sender-Auth: rPpo5rHhohR-CAmdGqBayFoBG3E Message-ID: Subject: Please review: fix panics on kldload/kldunload fasttrap From: Alan Somers To: freebsd-dtrace@freebsd.org Content-Type: multipart/mixed; boundary=047d7bf19852253f9a04eb3d15ee X-Content-Filtered-By: Mailman/MimeDel 2.1.16 X-BeenThere: freebsd-dtrace@freebsd.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "A discussion list for developers working on DTrace in FreeBSD." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Nov 2013 20:31:29 -0000 --047d7bf19852253f9a04eb3d15ee Content-Type: text/plain; charset=ISO-8859-1 I've found a few problems with fasttrap that can cause panics on kldload and kldunload. Can someone please review this patch? I've also attached an ATF test case for it. The test case loads and unloads the fasttrap module 500 times while several sh processes are forking, execing, and exiting at about 600 times/second/cpu. * kproc_create(fasttrap_pid_cleanup_cb, ...) gets called before fasttrap_provs.fth_table gets allocated. This can lead to a panic on module load, because fasttrap_pid_cleanup_cb references fasttrap_provs.fth_table. My patch moves kproc_create down after the point that fasttrap_provs.fth_table gets allocated, and modifies the error handling accordingly. * dtrace_fasttrap_{fork,exec,exit} weren't getting NULLed until after fasttrap_provs.fth_table got freed. That caused panics on module unload because fasttrap_exec_exit calls fasttrap_provider_retire, which references fasttrap_provs.fth_table. My patch NULLs those function pointers earlier. * There isn't any code to destroy the fasttrap_{tpoints,provs,procs}.fth_table mutexes on module unload, leading to a resource leak when WITNESS is enabled. My patch destroys those mutexes during fasttrap_unload(). -Alan --047d7bf19852253f9a04eb3d15ee Content-Type: text/plain; charset=US-ASCII; name="fasttrap_unload.diff" Content-Disposition: attachment; filename="fasttrap_unload.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ho1vsow00 SW5kZXg6IHN5cy9jZGRsL2NvbnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9kdHJhY2UvZmFz dHRyYXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvY2RkbC9jb250cmliL29wZW5zb2xhcmlzL3V0cy9j b21tb24vZHRyYWNlL2Zhc3R0cmFwLmMJKHJldmlzaW9uIDI1NzgwMykKKysrIHN5cy9jZGRsL2Nv bnRyaWIvb3BlbnNvbGFyaXMvdXRzL2NvbW1vbi9kdHJhY2UvZmFzdHRyYXAuYwkod29ya2luZyBj b3B5KQpAQCAtMjI4NCwxMyArMjI4NCw2IEBACiAJbXV0ZXhfaW5pdCgmZmFzdHRyYXBfY291bnRf bXR4LCAiZmFzdHRyYXAgY291bnQgbXR4IiwgTVVURVhfREVGQVVMVCwKIAkgICAgTlVMTCk7CiAK LQlyZXQgPSBrcHJvY19jcmVhdGUoZmFzdHRyYXBfcGlkX2NsZWFudXBfY2IsIE5VTEwsCi0JICAg ICZmYXN0dHJhcF9jbGVhbnVwX3Byb2MsIDAsIDAsICJmdGNsZWFudXAiKTsKLQlpZiAocmV0ICE9 IDApIHsKLQkJZGVzdHJveV9kZXYoZmFzdHRyYXBfY2Rldik7Ci0JCXJldHVybiAocmV0KTsKLQl9 Ci0KICNpZiBkZWZpbmVkKHN1bikKIAlmYXN0dHJhcF9tYXggPSBkZGlfZ2V0cHJvcChERElfREVW X1RfQU5ZLCBkZXZpLCBERElfUFJPUF9ET05UUEFTUywKIAkgICAgImZhc3R0cmFwLW1heC1wcm9i ZXMiLCBGQVNUVFJBUF9NQVhfREVGQVVMVCk7CkBAIC0yMzQ0LDYgKzIzMzcsMjQgQEAKIAkJICAg ICJwcm92aWRlcnMgYnVja2V0IG10eCIsIE1VVEVYX0RFRkFVTFQsIE5VTEwpOwogI2VuZGlmCiAK KwlyZXQgPSBrcHJvY19jcmVhdGUoZmFzdHRyYXBfcGlkX2NsZWFudXBfY2IsIE5VTEwsCisJICAg ICZmYXN0dHJhcF9jbGVhbnVwX3Byb2MsIDAsIDAsICJmdGNsZWFudXAiKTsKKwlpZiAocmV0ICE9 IDApIHsKKwkJZGVzdHJveV9kZXYoZmFzdHRyYXBfY2Rldik7CisjaWYgIWRlZmluZWQoc3VuKQor CQlmb3IgKGkgPSAwOyBpIDwgZmFzdHRyYXBfcHJvdnMuZnRoX25lbnQ7IGkrKykKKwkJCW11dGV4 X2Rlc3Ryb3koJmZhc3R0cmFwX3Byb3ZzLmZ0aF90YWJsZVtpXS5mdGJfbXR4KTsKKwkJZm9yIChp ID0gMDsgaSA8IGZhc3R0cmFwX3Rwb2ludHMuZnRoX25lbnQ7IGkrKykKKwkJCW11dGV4X2Rlc3Ry b3koJmZhc3R0cmFwX3Rwb2ludHMuZnRoX3RhYmxlW2ldLmZ0Yl9tdHgpOworI2VuZGlmCisJCWtt ZW1fZnJlZShmYXN0dHJhcF9wcm92cy5mdGhfdGFibGUsIGZhc3R0cmFwX3Byb3ZzLmZ0aF9uZW50 ICoKKwkJICAgIHNpemVvZiAoZmFzdHRyYXBfYnVja2V0X3QpKTsKKwkJbXR4X2Rlc3Ryb3koJmZh c3R0cmFwX2NsZWFudXBfbXR4KTsKKwkJbXV0ZXhfZGVzdHJveSgmZmFzdHRyYXBfY291bnRfbXR4 KTsKKwkJcmV0dXJuIChyZXQpOworCX0KKworCiAJLyoKIAkgKiAuLi4gYW5kIHRoZSBwcm9jcyBo YXNoIHRhYmxlLgogCSAqLwpAQCAtMjQzNiw2ICsyNDQ3LDIwIEBACiAJCXJldHVybiAoLTEpOwog CX0KIAorCS8qCisJICogU3RvcCBuZXcgcHJvY2Vzc2VzIGZyb20gZW50ZXJpbmcgdGhlc2UgaG9v a3Mgbm93LCBiZWZvcmUgdGhlCisJICogZmFzdHRyYXBfY2xlYW51cCB0aHJlYWQgcnVucy4gIFRo YXQgd2F5IGFsbCBwcm9jZXNzZXMgd2lsbCBob3BlZnVsbHkKKwkgKiBiZSBvdXQgb2YgdGhlc2Ug aG9va3MgYmVmb3JlIHdlIGZyZWUgZmFzdHRyYXBfcHJvdnMuZnRoX3RhYmxlCisJICovCisJQVNT RVJUKGR0cmFjZV9mYXN0dHJhcF9mb3JrID09ICZmYXN0dHJhcF9mb3JrKTsKKwlkdHJhY2VfZmFz dHRyYXBfZm9yayA9IE5VTEw7CisKKwlBU1NFUlQoZHRyYWNlX2Zhc3R0cmFwX2V4ZWMgPT0gJmZh c3R0cmFwX2V4ZWNfZXhpdCk7CisJZHRyYWNlX2Zhc3R0cmFwX2V4ZWMgPSBOVUxMOworCisJQVNT RVJUKGR0cmFjZV9mYXN0dHJhcF9leGl0ID09ICZmYXN0dHJhcF9leGVjX2V4aXQpOworCWR0cmFj ZV9mYXN0dHJhcF9leGl0ID0gTlVMTDsKKwogCW10eF9sb2NrKCZmYXN0dHJhcF9jbGVhbnVwX210 eCk7CiAJZmFzdHRyYXBfY2xlYW51cF9kcmFpbiA9IDE7CiAJLyogV2FpdCBmb3IgdGhlIGNsZWFu dXAgdGhyZWFkIHRvIGZpbmlzaCB1cCBhbmQgc2lnbmFsIHVzLiAqLwpAQCAtMjQ1MSw2ICsyNDc2 LDE0IEBACiAJbXV0ZXhfZXhpdCgmZmFzdHRyYXBfY291bnRfbXR4KTsKICNlbmRpZgogCisjaWYg IWRlZmluZWQoc3VuKQorCWZvciAoaSA9IDA7IGkgPCBmYXN0dHJhcF90cG9pbnRzLmZ0aF9uZW50 OyBpKyspCisJCW11dGV4X2Rlc3Ryb3koJmZhc3R0cmFwX3Rwb2ludHMuZnRoX3RhYmxlW2ldLmZ0 Yl9tdHgpOworCWZvciAoaSA9IDA7IGkgPCBmYXN0dHJhcF9wcm92cy5mdGhfbmVudDsgaSsrKQor CQltdXRleF9kZXN0cm95KCZmYXN0dHJhcF9wcm92cy5mdGhfdGFibGVbaV0uZnRiX210eCk7CisJ Zm9yIChpID0gMDsgaSA8IGZhc3R0cmFwX3Byb2NzLmZ0aF9uZW50OyBpKyspCisJCW11dGV4X2Rl c3Ryb3koJmZhc3R0cmFwX3Byb2NzLmZ0aF90YWJsZVtpXS5mdGJfbXR4KTsKKyNlbmRpZgogCWtt ZW1fZnJlZShmYXN0dHJhcF90cG9pbnRzLmZ0aF90YWJsZSwKIAkgICAgZmFzdHRyYXBfdHBvaW50 cy5mdGhfbmVudCAqIHNpemVvZiAoZmFzdHRyYXBfYnVja2V0X3QpKTsKIAlmYXN0dHJhcF90cG9p bnRzLmZ0aF9uZW50ID0gMDsKQEAgLTI0NjMsMjIgKzI0OTYsNiBAQAogCSAgICBmYXN0dHJhcF9w cm9jcy5mdGhfbmVudCAqIHNpemVvZiAoZmFzdHRyYXBfYnVja2V0X3QpKTsKIAlmYXN0dHJhcF9w cm9jcy5mdGhfbmVudCA9IDA7CiAKLQkvKgotCSAqIFdlIGtub3cgdGhlcmUgYXJlIG5vIHRyYWNl cG9pbnRzIGluIGFueSBwcm9jZXNzIGFueXdoZXJlIGluCi0JICogdGhlIHN5c3RlbSBzbyB0aGVy ZSBpcyBubyBwcm9jZXNzIHdoaWNoIGhhcyBpdHMgcF9kdHJhY2VfY291bnQKLQkgKiBncmVhdGVy IHRoYW4gemVybywgdGhlcmVmb3JlIHdlIGtub3cgdGhhdCBubyB0aHJlYWQgY2FuIGFjdGl2ZWx5 Ci0JICogYmUgZXhlY3V0aW5nIGNvZGUgaW4gZmFzdHRyYXBfZm9yaygpLiBTaW1pbGFybHkgZm9y IHBfZHRyYWNlX3Byb2JlcwotCSAqIGFuZCBmYXN0dHJhcF9leGVjKCkgYW5kIGZhc3R0cmFwX2V4 aXQoKS4KLQkgKi8KLQlBU1NFUlQoZHRyYWNlX2Zhc3R0cmFwX2ZvcmsgPT0gJmZhc3R0cmFwX2Zv cmspOwotCWR0cmFjZV9mYXN0dHJhcF9mb3JrID0gTlVMTDsKLQotCUFTU0VSVChkdHJhY2VfZmFz dHRyYXBfZXhlYyA9PSAmZmFzdHRyYXBfZXhlY19leGl0KTsKLQlkdHJhY2VfZmFzdHRyYXBfZXhl YyA9IE5VTEw7Ci0KLQlBU1NFUlQoZHRyYWNlX2Zhc3R0cmFwX2V4aXQgPT0gJmZhc3R0cmFwX2V4 ZWNfZXhpdCk7Ci0JZHRyYWNlX2Zhc3R0cmFwX2V4aXQgPSBOVUxMOwotCiAjaWYgIWRlZmluZWQo c3VuKQogCWRlc3Ryb3lfZGV2KGZhc3R0cmFwX2NkZXYpOwogCW11dGV4X2Rlc3Ryb3koJmZhc3R0 cmFwX2NvdW50X210eCk7Cg== --047d7bf19852253f9a04eb3d15ee--