From owner-freebsd-hackers@FreeBSD.ORG Thu Dec 29 11:47:29 2011 Return-Path: Delivered-To: hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 61E311065673 for ; Thu, 29 Dec 2011 11:47:29 +0000 (UTC) (envelope-from utisoft@gmail.com) Received: from mail-iy0-f182.google.com (mail-iy0-f182.google.com [209.85.210.182]) by mx1.freebsd.org (Postfix) with ESMTP id 265A68FC14 for ; Thu, 29 Dec 2011 11:47:28 +0000 (UTC) Received: by iadj38 with SMTP id j38so29705621iad.13 for ; Thu, 29 Dec 2011 03:47:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; bh=0V/+NdJ7yGMjiFAZr0lg0QtxvTM30rK9jwUZdhg99c8=; b=X56W0jp2m9Ya+6F0hGJQeUu7lMwRUW2pJZZU7LzD4dfrpT7oG2LBR25LKptTa/jMCP f77TeqkulWproSkogy6BCVVvvNf8IY6dXW0xBdFIt6rBcGdghNb6LaCTjXh1b5PAHmyD vgQNCchVpoPo8K4BCEwGRzfwH5oLaygJKzvEU= Received: by 10.50.100.164 with SMTP id ez4mr20684307igb.12.1325159248278; Thu, 29 Dec 2011 03:47:28 -0800 (PST) MIME-Version: 1.0 Received: by 10.231.207.7 with HTTP; Thu, 29 Dec 2011 03:46:57 -0800 (PST) In-Reply-To: <20111228150023.GY50300@deviant.kiev.zoral.com.ua> References: <20111228135641.GV50300@deviant.kiev.zoral.com.ua> <20111228150023.GY50300@deviant.kiev.zoral.com.ua> From: Chris Rees Date: Thu, 29 Dec 2011 11:46:57 +0000 Message-ID: To: Kostik Belousov Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: hackers@freebsd.org Subject: Re: Checking for other kernel modules on load X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Dec 2011 11:47:29 -0000 2011/12/28 Kostik Belousov : > On Wed, Dec 28, 2011 at 02:53:42PM +0000, Chris Rees wrote: >> 2011/12/28 Kostik Belousov : >> > On Wed, Dec 28, 2011 at 12:23:58PM +0000, Chris Rees wrote: >> >> On 28 December 2011 12:21, Daniel O'Connor wr= ote: >> >> > >> >> > On 28/12/2011, at 22:07, Chris Rees wrote: >> >> >> Is there a simple way to check for existence of a driver? =A0I cou= ld >> >> >> even check for /dev/sndstat, though that doesn't seem elegant to m= e... >> >> > >> >> > kldstat -v, but really /dev/sndstat seems simpler and just as effec= tive. >> >> > >> >> >> >> Cheers-- I was thinking of a kernel-level function though. >> >> >> >> cognet@ suggested using modfind("sound"), I'll go with that. >> > Obvious question is what the panic is. Checking for modules loaded is >> > papering over some issue. >> >> True, although I figured that it was a simple conflict, possibly to do >> with sndstat. >> >> Also, I'm getting panics with the following patch, whether sound is >> loaded or not :) >> >> + =A0if (modfind("sound") >=3D 0) >> + =A0 =A0{ >> + =A0 =A0 =A0cmn_err (CE_WARN, "A conflicting sound driver is already lo= aded"); >> + =A0 =A0 =A0return EBUSY; >> + =A0 =A0} >> + >> >> Is there a better way to handle such conflicts? > > You have missed the point. There is some bug in oss driver that causing > the panic. Presumed 'conflict' cannot cause the harm itself, besides not > allowing second driver to attach to the same device, and should not resul= t > in panic. Trying to implement a half-measure that only covers the problem > you do a mis-service. > > And you still did not provided the panic message. I'm sorry, you're right. However, your guess was in fact correct; make_dev was being called, which returned a null pointer because it failed. The patch at [1] stops the panic, however I was hoping that returning EBUSY would abort loading the module... At the moment it loads the module, and doesn't create the sndstat dev, which causes weird errors with the oss binary commands. Since this solves the panic and anyone should be able to work out from the warning message what the problem is, AND this is a port that apparently no-one else uses, should this be sufficient? BTW, it only affects FreeBSD 9+, couldn't reproduce on my 8.2 dev machine, but could once I upgraded it. Chris [1] http://www.bayofrum.net/~crees/patches/oss-patch-kernel-OS-FreeBSD-os_f= reebsd.c