Re: Kernel doesn't call spi driver's _match() and _attach()
Valery Ushakov <[email protected]>
| Newsgroups | gmane.os.netbsd.devel.kernel |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Sep 16, 2024 at 23:16:18 +0300, Nikita Donskov wrote:
> During open("/dev/mydev0", O_RDONLY) call no errors occured. But
> when I tried to perform one of ioctls from userland, I got invalid
> memory access error in the very beginning of mydev_ioctl().
Since your driver's attach was never called, your mydev_open should
have never returned success. sc = device_lookup_private in mydev_open
should have returned null to you and your open should detect that and
fail:
if (sc == NULL)
return ENXIO;
> int
> mydev_ioctl(dev_t dev, u_long cmd, void *data, int flags, struct lwp *lwp)
> {
> struct mydev_softc *sc;
> sc = device_lookup_private(&mydev_cd, minor(dev)); /* BANG! */
> ...
It's likely it goes bang a bit further down, b/c you didn't check that
sc is valid? Again, sc should have been NULL here and the driver
should check that.
-uwe