From owner-svn-src-all@freebsd.org Mon Jan 7 06:19:52 2019 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 957D51487B6B; Mon, 7 Jan 2019 06:19:52 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1127B75390; Mon, 7 Jan 2019 06:19:52 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EBEB3BDFB; Mon, 7 Jan 2019 06:19:51 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x076JpVh095532; Mon, 7 Jan 2019 06:19:51 GMT (envelope-from imp@FreeBSD.org) Received: (from imp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x076JpAl095531; Mon, 7 Jan 2019 06:19:51 GMT (envelope-from imp@FreeBSD.org) Message-Id: <201901070619.x076JpAl095531@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: imp set sender to imp@FreeBSD.org using -f From: Warner Losh Date: Mon, 7 Jan 2019 06:19:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r342843 - head/sys/dev/pccard X-SVN-Group: head X-SVN-Commit-Author: imp X-SVN-Commit-Paths: head/sys/dev/pccard X-SVN-Commit-Revision: 342843 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 1127B75390 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_LONG(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.96)[-0.956,0] X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Jan 2019 06:19:52 -0000 Author: imp Date: Mon Jan 7 06:19:51 2019 New Revision: 342843 URL: https://svnweb.freebsd.org/changeset/base/342843 Log: Fix a race between setting up the interrupt handler and it firing by setting the data prior to setting up the interrupt. Now we only set the cookie afterwards, and that (a) cannot be helpd and (b) isn't used in the ISR. PR: 147127 Submitted by: hps@ Modified: head/sys/dev/pccard/pccard.c Modified: head/sys/dev/pccard/pccard.c ============================================================================== --- head/sys/dev/pccard/pccard.c Mon Jan 7 05:59:58 2019 (r342842) +++ head/sys/dev/pccard/pccard.c Mon Jan 7 06:19:51 2019 (r342843) @@ -1272,13 +1272,16 @@ pccard_setup_intr(device_t dev, device_t child, struct if (pf->intr_filter != NULL || pf->intr_handler != NULL) panic("Only one interrupt handler per function allowed"); - err = bus_generic_setup_intr(dev, child, irq, flags, pccard_filter, - intr ? pccard_intr : NULL, pf, cookiep); - if (err != 0) - return (err); pf->intr_filter = filt; pf->intr_handler = intr; pf->intr_handler_arg = arg; + err = bus_generic_setup_intr(dev, child, irq, flags, pccard_filter, + intr ? pccard_intr : NULL, pf, cookiep); + if (err != 0) { + pf->intr_filter = NULL; + pf->intr_handler = NULL; + return (err); + } pf->intr_handler_cookie = *cookiep; if (pccard_mfc(sc)) { pccard_ccr_write(pf, PCCARD_CCR_OPTION,