From owner-freebsd-current Mon Jan 6 16:46:16 2003 Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2BE2C37B401 for ; Mon, 6 Jan 2003 16:46:15 -0800 (PST) Received: from rootlabs.com (root.org [67.118.192.226]) by mx1.FreeBSD.org (Postfix) with SMTP id 88FFD43ED1 for ; Mon, 6 Jan 2003 16:46:14 -0800 (PST) (envelope-from nate@rootlabs.com) Received: (qmail 12513 invoked by uid 1000); 7 Jan 2003 00:46:15 -0000 Date: Mon, 6 Jan 2003 16:46:15 -0800 (PST) From: Nate Lawson To: current@freebsd.org Cc: ryan beasley Subject: if_dc.c locking patch In-Reply-To: <20030104074914.GS311@goddamnbastard.org> Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-445848951-1041900375=:12472" Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG 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. --0-445848951-1041900375=:12472 Content-Type: TEXT/PLAIN; charset=US-ASCII Attached is a diff that fixes a "could sleep" problem where ether_ifattach() does a malloc and dc(4) is holding a lock in its softc. It uses a cleaner exit strategy with only one call to DC_UNLOCK and no multiple return statements as well as fixing one place where "error" wasn't set. If people are ok with it, I'll sweep other drivers that have a similar problem. -Nate --0-445848951-1041900375=:12472 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="if_dc.diff" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="if_dc.diff" SW5kZXg6IGlmX2RjLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBm aWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvcGNpL2lmX2RjLmMsdg0KcmV0cmll dmluZyByZXZpc2lvbiAxLjg1DQpkaWZmIC11IC1yMS44NSBpZl9kYy5jDQot LS0gaWZfZGMuYwkyNyBOb3YgMjAwMiAwNzowNDoxMCAtMDAwMAkxLjg1DQor KysgaWZfZGMuYwk3IEphbiAyMDAzIDAwOjM2OjMwIC0wMDAwDQpAQCAtMjE2 Miw2ICsyMTYyLDcgQEANCiAJCW1hYyA9IHBjaV9nZXRfZXRoZXIoZGV2KTsN CiAJCWlmICghbWFjKSB7DQogCQkJZGV2aWNlX3ByaW50ZihkZXYsICJObyBz dGF0aW9uIGFkZHJlc3MgaW4gQ0lTIVxuIik7DQorCQkJZXJyb3IgPSBFTlhJ TzsNCiAJCQlnb3RvIGZhaWw7DQogCQl9DQogCQliY29weShtYWMsIGVhZGRy LCBFVEhFUl9BRERSX0xFTik7DQpAQCAtMjI2NiwxMSArMjI2Nyw2IEBADQog CX0NCiANCiAJLyoNCi0JICogQ2FsbCBNSSBhdHRhY2ggcm91dGluZS4NCi0J ICovDQotCWV0aGVyX2lmYXR0YWNoKGlmcCwgZWFkZHIpOw0KLQ0KLQkvKg0K IAkgKiBUZWxsIHRoZSB1cHBlciBsYXllcihzKSB3ZSBzdXBwb3J0IGxvbmcg ZnJhbWVzLg0KIAkgKi8NCiAJaWZwLT5pZl9kYXRhLmlmaV9oZHJsZW4gPSBz aXplb2Yoc3RydWN0IGV0aGVyX3ZsYW5faGVhZGVyKTsNCkBAIC0yMzA0LDE0 ICsyMzAwLDE2IEBADQogCX0NCiAjZW5kaWYNCiANCi0JRENfVU5MT0NLKHNj KTsNCi0JcmV0dXJuKDApOw0KLQ0KIGZhaWw6DQogCURDX1VOTE9DSyhzYyk7 DQogZmFpbF9ub2xvY2s6DQotCW10eF9kZXN0cm95KCZzYy0+ZGNfbXR4KTsN Ci0JcmV0dXJuKGVycm9yKTsNCisJLyogSWYgbm8gZXJyb3JzLCBjYWxsIHRo ZSBNSSBhdHRhY2ggcm91dGluZS4gKi8NCisJaWYgKGVycm9yID09IDApDQor CQlldGhlcl9pZmF0dGFjaChpZnAsIGVhZGRyKTsNCisJZWxzZQ0KKwkJbXR4 X2Rlc3Ryb3koJnNjLT5kY19tdHgpOw0KKw0KKwlyZXR1cm4gKGVycm9yKTsN CiB9DQogDQogc3RhdGljIGludA0K --0-445848951-1041900375=:12472-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message