From nobody Mon Jan 31 07:32:40 2022 X-Original-To: usb@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id B07B0197E100 for ; Mon, 31 Jan 2022 07:32:52 +0000 (UTC) (envelope-from nitin.gupta981@gmail.com) Received: from mail-yb1-xb33.google.com (mail-yb1-xb33.google.com [IPv6:2607:f8b0:4864:20::b33]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4JnKXg5Hmnz4nT4 for ; Mon, 31 Jan 2022 07:32:51 +0000 (UTC) (envelope-from nitin.gupta981@gmail.com) Received: by mail-yb1-xb33.google.com with SMTP id w81so15391477ybg.12 for ; Sun, 30 Jan 2022 23:32:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=29gK0WVSrGkvCt3BlxlvqI99qPu8YVwDutFISQ1adww=; b=S3ogDnirXFfqhW3Jx/xIxBnjTojqLTrxAkVusaM+wqoSB4wJSYZWRa9Yb+uTNJkCIx Fl2vwNvnHKIALa9dOXW35v5rpim0qFxYdiCdxw638n/Y0+lG6oCpnC8eBJIhnly4yYJ/ tX/VAaz1nomFrJkeL26Gjb/YxcuCQax26oRQ85TGsJjTE7DlxNM8e1saa0Wu3AFy50Bz 3b5bM196q06o6FjWbH4RldPcS22KT986c7jblsxQBLDH3Nz8YQeUYU8ImCVztdVUAhsv SJFMqw0C68Db7FRQhqnJF80AY8gJcuB/PCZnmHPkAV/33uaXcfa6ZXVQw/XoEO3L+Wee A/zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=29gK0WVSrGkvCt3BlxlvqI99qPu8YVwDutFISQ1adww=; b=UO9hg4Ob6C3GwHlx7LrqQG66upMq1N0DMGq4J7FvwQvDP6pczo3qAZpGOGYssOGsXz rKg3Dga8yumkXI9ZxPIIvHWdwc1NWW1DL1DlNoF6L4kiEEUiFU8OZShiJQSawsyl+Vwl vxWxVSKdFhfnVdw3aJzpSoYsHr5R0uLn3y36wFIIRlpkx3Nb/rZkr7u4o6ZG92DZlKNF QmG94vTCQacM0VpFeS9unY79zQk0W4MMkiw0GDnaJpNrOLPa2Bf8NwlFVHY4+Hvem5BM wyZRbTpdpnXHkzpH4NBZ6QNtTvnQS22b86Da8s5cBamlG7o2IX/lj47zEheP/5a5yxAy t7hg== X-Gm-Message-State: AOAM5314a5g/XqdCtEqgsWrtWheB3Vu9GY0IzBWu+faJwta9fLOrwLW4 8AYwHQXneIDyXmDoUfzBrcGzRdGsXkGrLoEUidNkNQbdnT4= X-Google-Smtp-Source: ABdhPJzS2q7ociBjaupnbFA9dMzdGWp50oG2uADx+fuJxiuKt0kTCRmne18LLlueSWf+bsFSZ7f+knf4foEiTeBl6x4= X-Received: by 2002:a25:3c04:: with SMTP id j4mr26152494yba.74.1643614370913; Sun, 30 Jan 2022 23:32:50 -0800 (PST) List-Id: FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-usb List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-usb@freebsd.org X-BeenThere: freebsd-usb@freebsd.org MIME-Version: 1.0 From: Nitin Gupta Date: Mon, 31 Jan 2022 13:02:40 +0530 Message-ID: Subject: xhci Panic patch To: usb@freebsd.org Content-Type: multipart/mixed; boundary="000000000000ba210905d6dbca36" X-Rspamd-Queue-Id: 4JnKXg5Hmnz4nT4 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20210112 header.b=S3ogDnir; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of nitingupta981@gmail.com designates 2607:f8b0:4864:20::b33 as permitted sender) smtp.mailfrom=nitingupta981@gmail.com X-Spamd-Result: default: False [-2.02 / 15.00]; FREEMAIL_FROM(0.00)[gmail.com]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; HAS_ATTACHMENT(0.00)[]; TO_DN_NONE(0.00)[]; MID_RHS_MATCH_FROMTLD(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; NEURAL_HAM_SHORT(-1.00)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:+,3:~,4:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; TAGGED_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20210112]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[multipart/mixed,multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[usb@freebsd.org]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_SPAM_LONG(0.98)[0.978]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::b33:from]; MLMMJ_DEST(0.00)[usb]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[] X-ThisMailContainsUnwantedMimeParts: N --000000000000ba210905d6dbca36 Content-Type: multipart/alternative; boundary="000000000000ba210605d6dbca34" --000000000000ba210605d6dbca34 Content-Type: text/plain; charset="UTF-8" Dear Group Member I came across the kernel Panic in xhci module for some of my development activities .Issue is very random and looks like td is NULL .. Please Review the below patch and let me know your thoughts index e88a827..a6ce227 100644 --- a/sys/dev/usb/controller/xhci.c +++ b/sys/dev/usb/controller/xhci.c @@ -886,7 +886,7 @@ xhci_skip_transfer(struct usb_xfer *xfer) static void xhci_check_transfer(struct xhci_softc *sc, struct xhci_trb *trb) { - struct xhci_endpoint_ext *pepext; + struct xhci_endpoint_ext *pepext = NULL; int64_t offset; uint64_t td_event; uint32_t temp; @@ -929,6 +929,10 @@ xhci_check_transfer(struct xhci_softc *sc, struct xhci_trb *trb ) pepext = &sc->sc_hw.devs[index].endp[epno]; + if (pepext == NULL) { + DPRINTF("pepext is Null\n"); + return; + } if (pepext->trb_ep_mode != USB_EP_MODE_STREAMS) { stream_id = 0; @@ -940,8 +944,8 @@ xhci_check_transfer(struct xhci_softc *sc, struct xhci_trb *trb) /* try to find the USB transfer that generated the event */ for (i = 0; i != (XHCI_MAX_TRANSFERS - 1); i++) { - struct usb_xfer *xfer; - struct xhci_td *td; + struct usb_xfer *xfer = NULL; + struct xhci_td *td = NULL; xfer = pepext->xfer[i + (XHCI_MAX_TRANSFERS * stream_id)]; if (xfer == NULL) @@ -949,6 +953,9 @@ xhci_check_transfer(struct xhci_softc *sc, struct xhci_trb *trb) td = xfer->td_transfer_cache; Regards Nitin --000000000000ba210605d6dbca34 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Dear Group Member=C2=A0

I came across t= he kernel Panic in xhci module for some of my development=C2=A0activities .= Issue is very random and looks like td is=C2=A0NULL ..
Please Rev= iew the below patch and let me know your=C2=A0thoughts

=

index e88a827..a6ce227 100644
--- a/sys/dev/usb/controller/xhci.c
+++ b/sys/dev/usb/controller/xhci.c
@@ -886,7 +886,7 @@ xhci_skip_transfer(struct usb_xfer *xfer)
 static void
 xhci_check_transfer(struct xhci_softc *sc, struct xhci_trb *trb)
 {
-       struct xhci_endpoint_ext *pepext;
+       struct xhci_endpoint_ext *pepext =3D NULL;
        int64_t offset;
        uint64_t td_event;
        uint32_t temp;
@@ -929,6 +929,10 @@ xhci_check_transfer(struct xhci_softc *sc, struct xhci=
_trb *trb
)

        pepext =3D &sc->sc_hw.devs[index].endp[epno];

+       if (pepext =3D=3D NULL) {
+               DPRINTF("pepext is Null\n");
+               return;
+       }
        if (pepext->trb_ep_mode !=3D USB_EP_MODE_STREAMS) {
                stream_id =3D 0;
@@ -940,8 +944,8 @@ xhci_check_transfer(struct xhci_softc *sc, struct xhci_=
trb *trb)

        /* try to find the USB transfer that generated the event */
        for (i =3D 0; i !=3D (XHCI_MAX_TRANSFERS - 1); i++) {
-               struct usb_xfer *xfer;
-               struct xhci_td *td;
+               struct usb_xfer *xfer =3D NULL;
+               struct xhci_td *td =3D NULL;

                xfer =3D pepext->xfer[i + (XHCI_MAX_TRANSFERS * stream_i=
d)];
                if (xfer =3D=3D NULL)
@@ -949,6 +953,9 @@ xhci_check_transfer(struct xhci_softc *sc, struct xhci_=
trb *trb)

                td =3D xfer->td_transfer_cache;



Regards
Nitin
--000000000000ba210605d6dbca34-- --000000000000ba210905d6dbca36 Content-Type: application/octet-stream; name=xhci_td_null_check_patch Content-Disposition: attachment; filename=xhci_td_null_check_patch Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kz2djty80 ZGlmZiAtLWdpdCBhL3N5cy9kZXYvdXNiL2NvbnRyb2xsZXIveGhjaS5jIGIvc3lzL2Rldi91c2Iv Y29udHJvbGxlci94aGNpLmMKaW5kZXggZTg4YTgyNzNmLi5hNmNlMjI3ZTggMTAwNjQ0Ci0tLSBh L3N5cy9kZXYvdXNiL2NvbnRyb2xsZXIveGhjaS5jCisrKyBiL3N5cy9kZXYvdXNiL2NvbnRyb2xs ZXIveGhjaS5jCkBAIC04ODYsNyArODg2LDcgQEAgeGhjaV9za2lwX3RyYW5zZmVyKHN0cnVjdCB1 c2JfeGZlciAqeGZlcikKIHN0YXRpYyB2b2lkCiB4aGNpX2NoZWNrX3RyYW5zZmVyKHN0cnVjdCB4 aGNpX3NvZnRjICpzYywgc3RydWN0IHhoY2lfdHJiICp0cmIpCiB7Ci0Jc3RydWN0IHhoY2lfZW5k cG9pbnRfZXh0ICpwZXBleHQ7CisJc3RydWN0IHhoY2lfZW5kcG9pbnRfZXh0ICpwZXBleHQgPSBO VUxMOwogCWludDY0X3Qgb2Zmc2V0OwogCXVpbnQ2NF90IHRkX2V2ZW50OwogCXVpbnQzMl90IHRl bXA7CkBAIC05MjksNiArOTI5LDEwIEBAIHhoY2lfY2hlY2tfdHJhbnNmZXIoc3RydWN0IHhoY2lf c29mdGMgKnNjLCBzdHJ1Y3QgeGhjaV90cmIgKnRyYikKIAogCXBlcGV4dCA9ICZzYy0+c2NfaHcu ZGV2c1tpbmRleF0uZW5kcFtlcG5vXTsKIAkKKwlpZiAocGVwZXh0ID09IE5VTEwpIHsKKwkJRFBS SU5URigicGVwZXh0IGlzIE51bGxcbiIpOworCQlyZXR1cm47CisJfQogCiAJaWYgKHBlcGV4dC0+ dHJiX2VwX21vZGUgIT0gVVNCX0VQX01PREVfU1RSRUFNUykgewogCQlzdHJlYW1faWQgPSAwOwpA QCAtOTQwLDggKzk0NCw4IEBAIHhoY2lfY2hlY2tfdHJhbnNmZXIoc3RydWN0IHhoY2lfc29mdGMg KnNjLCBzdHJ1Y3QgeGhjaV90cmIgKnRyYikKIAogCS8qIHRyeSB0byBmaW5kIHRoZSBVU0IgdHJh bnNmZXIgdGhhdCBnZW5lcmF0ZWQgdGhlIGV2ZW50ICovCiAJZm9yIChpID0gMDsgaSAhPSAoWEhD SV9NQVhfVFJBTlNGRVJTIC0gMSk7IGkrKykgewotCQlzdHJ1Y3QgdXNiX3hmZXIgKnhmZXI7Ci0J CXN0cnVjdCB4aGNpX3RkICp0ZDsKKwkJc3RydWN0IHVzYl94ZmVyICp4ZmVyID0gTlVMTDsKKwkJ c3RydWN0IHhoY2lfdGQgKnRkID0gTlVMTDsKIAogCQl4ZmVyID0gcGVwZXh0LT54ZmVyW2kgKyAo WEhDSV9NQVhfVFJBTlNGRVJTICogc3RyZWFtX2lkKV07CiAJCWlmICh4ZmVyID09IE5VTEwpCkBA IC05NDksNiArOTUzLDkgQEAgeGhjaV9jaGVja190cmFuc2ZlcihzdHJ1Y3QgeGhjaV9zb2Z0YyAq c2MsIHN0cnVjdCB4aGNpX3RyYiAqdHJiKQogCiAJCXRkID0geGZlci0+dGRfdHJhbnNmZXJfY2Fj aGU7CiAJCQorCQlpZiAodGQgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCiAJCURQUklOVEZOKDUs ICJDaGVja2luZyBpZiAweCUwMTZsbHggPT0gKDB4JTAxNmxseCAuLiAweCUwMTZsbHgpXG4iLAog CQkJKGxvbmcgbG9uZyl0ZF9ldmVudCwKIAkJCShsb25nIGxvbmcpdGQtPnRkX3NlbGYsCg== --000000000000ba210905d6dbca36--