Date: Tue, 24 Sep 2013 13:44:09 +0200 From: =?iso-8859-2?Q?Edward_Tomasz_Napiera=B3a?= <trasz@freebsd.org> To: Sergey Kandaurov <pluknet@gmail.com> Cc: "Sergey V. Dyatko" <sergey.dyatko@gmail.com>, current <current@freebsd.org> Subject: Re: panic: make_dev_credv: bad si_name (error=17, si_name=iscsi) Message-ID: <842AF8F6-E143-494C-B275-F395220732FF@freebsd.org> In-Reply-To: <CAE-mSOKpNMV9PWR-Z2geS889aSbaBiTZavdDmvaxwx6U4_7EPw@mail.gmail.com> References: <20130924104658.46313090@laptop.minsk.domain> <CAE-mSO%2BfWdySa%2BO6kuSe-z9AQsi0TNFy7LMrgx-btUJfQhx=jw@mail.gmail.com> <CAE-mSOKpNMV9PWR-Z2geS889aSbaBiTZavdDmvaxwx6U4_7EPw@mail.gmail.com>
index | next in thread | previous in thread | raw e-mail
Wiadomość napisana przez Sergey Kandaurov <pluknet@gmail.com> w dniu 24 wrz 2013, o godz. 13:00:
> On 24 September 2013 14:40, Sergey Kandaurov <pluknet@gmail.com> wrote:
>> On 24 September 2013 11:46, Sergey V. Dyatko <sergey.dyatko@gmail.com> wrote:
>>> Hi,
>>>
>>> today I tried to play a bit with new iscsi
>>>
>>> r255812 isn't fully complete fix?
>>>
>> [...]
>>> run `kldload iscsi_initiator` and got a panic:
>>
>> Something like this quick'n'dirty should work.
>> Compile tested only.
>>
>> Index: sys/dev/iscsi_initiator/iscsi.c
>> ===================================================================
>> --- sys/dev/iscsi_initiator/iscsi.c (revision 255841)
>> +++ sys/dev/iscsi_initiator/iscsi.c (working copy)
>> @@ -715,7 +715,8 @@
>> TUNABLE_INT_FETCH("net.iscsi_initiator.max_pdus", &max_pdus);
>>
>> isc = malloc(sizeof(struct isc_softc), M_ISCSI, M_ZERO|M_WAITOK);
>> - isc->dev = make_dev(&iscsi_cdevsw, max_sessions, UID_ROOT,
>> GID_WHEEL, 0600, "iscsi");
>> + isc->dev = make_dev_credf(MAKEDEV_CHECKNAME, &iscsi_cdevsw, max_sessions,
>> + NULL, UID_ROOT, GID_WHEEL, 0600, "iscsi");
>> isc->dev->si_drv1 = isc;
>> mtx_init(&isc->isc_mtx, "iscsi-isc", NULL, MTX_DEF);
>
> Erm, of course it shall be checked against failure.
Sure. What do you think about this:
Index: sys/dev/iscsi_initiator/iscsi.c
===================================================================
--- sys/dev/iscsi_initiator/iscsi.c (revision 255834)
+++ sys/dev/iscsi_initiator/iscsi.c (working copy)
@@ -715,8 +715,14 @@ iscsi_start(void)
TUNABLE_INT_FETCH("net.iscsi_initiator.max_pdus", &max_pdus);
isc = malloc(sizeof(struct isc_softc), M_ISCSI, M_ZERO|M_WAITOK);
- isc->dev = make_dev(&iscsi_cdevsw, max_sessions, UID_ROOT, GID_WHEEL, 0600, "iscsi");
- isc->dev->si_drv1 = isc;
+ isc->dev = make_dev_credf(MAKEDEV_CHECKNAME, &iscsi_cdevsw, max_sessions,
+ NULL, UID_ROOT, GID_WHEEL, 0600, "iscsi");
+ if (isc->dev == NULL) {
+ xdebug("iscsi_initiator: make_dev_credf failed");
+ // XXX: don't return; otherwise it would panic on unload
+ } else {
+ isc->dev->si_drv1 = isc;
+ }
mtx_init(&isc->isc_mtx, "iscsi-isc", NULL, MTX_DEF);
TAILQ_INIT(&isc->isc_sess);
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?842AF8F6-E143-494C-B275-F395220732FF>
