NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/58043: kernel crash in assert_sleepable() in -current, dk(4) driver?



The following reply was made to PR kern/58043; it has been noted by GNATS.

From: Paul Goyette <paul%whooppee.com@localhost>
To: gnats-bugs%netbsd.org@localhost
Cc: kern-bug-people%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Subject: Re: kern/58043: kernel crash in assert_sleepable() in -current,
 dk(4) driver?
Date: Mon, 18 Mar 2024 05:03:17 -0700 (PDT)

 I've already converted my config to raid0 instead of ccd, so I am sorry
 that I am unable to test the patch.  :-(
 
 On Mon, 18 Mar 2024, J. Hannken-Illjes wrote:
 
 > The following reply was made to PR kern/58043; it has been noted by GNATS.
 >
 > From: "J. Hannken-Illjes" <hannken%mailbox.org@localhost>
 > To: gnats-bugs%netbsd.org@localhost
 > Cc:
 > Subject: Re: kern/58043: kernel crash in assert_sleepable() in -current, dk(4)
 > driver?
 > Date: Mon, 18 Mar 2024 10:52:09 +0100
 >
 > --Apple-Mail=_C00F97DB-BCE8-4515-9DA6-D93726D027F3
 > Content-Transfer-Encoding: 7bit
 > Content-Type: text/plain;
 > 	charset=us-ascii
 >
 > Paul,
 >
 > please try the attached patch -- if it prevents assert_sleepable() to fire
 > it is the call to CCD_GETBUF() aka. pool_cache_get(ccd_cache, PR_WAITOK)
 > from softint context that has to be fixed.
 >
 > --
 > J. Hannken-Illjes - hannken%mailbox.org@localhost <mailto:hannken%mailbox.org@localhost>
 >
 > --Apple-Mail=_C00F97DB-BCE8-4515-9DA6-D93726D027F3
 > Content-Disposition: attachment;
 > 	filename=001_ccd_defer.diff
 > Content-Type: application/octet-stream;
 > 	x-unix-mode=0644;
 > 	name="001_ccd_defer.diff"
 > Content-Transfer-Encoding: 7bit
 >
 > ccd_defer
 >
 > Always defer requests to the helper thread so ccdstart() doesn't
 > get called from softint anymore.
 >
 > diff -r 8b8d2498ffd9 -r 2ec4e85f1120 sys/dev/ccd.c
 > --- sys/dev/ccd.c
 > +++ sys/dev/ccd.c
 > @@ -777,17 +777,10 @@ ccdstrategy(struct buf *bp)
 >  		return;
 >  	}
 >
 > -	/* Defer to thread if system is low on memory. */
 > +	/* Always defer to thread. */
 >  	bufq_put(cs->sc_bufq, bp);
 > -	if (__predict_false(ccdbackoff(cs))) {
 > -		mutex_exit(cs->sc_iolock);
 > -#ifdef DEBUG
 > - 		if (ccddebug & CCDB_FOLLOW)
 > - 			printf("ccdstrategy: holding off on I/O\n");
 > -#endif
 > -		return;
 > -	}
 > -	ccdstart(cs);
 > +	cv_broadcast(&cs->sc_push);
 > +	mutex_exit(cs->sc_iolock);
 >  }
 >
 >  static void
 >
 > --Apple-Mail=_C00F97DB-BCE8-4515-9DA6-D93726D027F3--
 >
 >
 > !DSPAM:65f80f7713337849015859!
 >
 >
 
 +---------------------+--------------------------+----------------------+
 | Paul Goyette (.sig) | PGP Key fingerprint:     | E-mail addresses:    |
 | (Retired)           | 1B11 1849 721C 56C8 F63A | paul%whooppee.com@localhost    |
 | Software Developer  | 6E2E 05FD 15CE 9F2D 5102 | pgoyette%netbsd.org@localhost  |
 | & Network Engineer  |                          | pgoyette99%gmail.com@localhost |
 +---------------------+--------------------------+----------------------+
 


Home | Main Index | Thread Index | Old Index