From nobody Wed May 15 18:49:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1539946359475750.1666579364022; Fri, 19 Oct 2018 03:52:39 -0700 (PDT) Received: from localhost ([::1]:48529 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gDSOG-0006tC-Vv for importer@patchew.org; Fri, 19 Oct 2018 06:52:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57147) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gDSMq-0006GD-JY for qemu-devel@nongnu.org; Fri, 19 Oct 2018 06:50:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gDSMn-0001Vl-Mi for qemu-devel@nongnu.org; Fri, 19 Oct 2018 06:50:56 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:42402) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gDSMn-0001MI-B1 for qemu-devel@nongnu.org; Fri, 19 Oct 2018 06:50:53 -0400 Received: by mail-pl1-x643.google.com with SMTP id c8-v6so15693100plo.9 for ; Fri, 19 Oct 2018 03:50:44 -0700 (PDT) Received: from localhost.localdomain.localdomain ([103.65.40.65]) by smtp.gmail.com with ESMTPSA id t64-v6sm42884856pfb.44.2018.10.19.03.50.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Oct 2018 03:50:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3MiAi9NwHwQRV07isDLymR24Mzr2UtsMm0zxuBsFGyQ=; b=WA9q4brKcAJVqqtyZhaPsLv+Sfse/e418G/ujLI+JlxQKlyfD2yWcsg0fLIYntLB2i KMPynmsqfSPgS2298IFxgO4F+zv885Lm8Y542OXOWx+Cb5Q5sJYY8kBCVE0KFIMHEG4K 7t0Mnh8W4oPmYgLm//2tgnmPW/8u4xE49YtS6d37AGfAN9iaK0A+P5UtDhT0jwL0uWjR GXazgQDDQrKIanBaFaau+k5JyadTXhrm1XOJzBfwb+3DI481fUMltC+TUBz+dLASrKcR 77yW0nZOs/YrlRe3unC6h4DdMEVM6MgYjXfwJ1KU0ARpIzaP2XGNIm0f9RpLCMPILm9W kOMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=3MiAi9NwHwQRV07isDLymR24Mzr2UtsMm0zxuBsFGyQ=; b=aeswENfy8JbpzPOfsei6JSiL7sBO5uE34sVNSrBhHM0i2Y5HjiMVs7FV/qxNjmRo8O sS78Et1XE9xp97fgexb4sh5K92Ysa515CM8Dbn7VaqkRFGNVkLdx6x5Utjo+yDLFP3De mrIJoicoYuMIq82R/Rlk6g2ezMhkIdbPlX37uWzIUnqN9LsC51+c/FycjuCtiDsb3mAq Aq0YG6Rkrbu9RXIxF35V7EEktaZ58PSRC8W8uI8oSx2TCItFeQYNlHUar2PCGPNlHCWV 4sL1f/yOv5b/QojEPZOFPhXLEcehOh4E7biJECc/rCfR3RBHvw8J1FE5+HAnmnv4Rksv k5+A== X-Gm-Message-State: ABuFfohOyn4/qv1YiQlU5MfARiGszolP1jAwiLxTArmls9IpG48bTbGs b0+pFtdK9qp+adGHO/Morio= X-Google-Smtp-Source: ACcGV62ERnXssowFGmP/WHEA2KbZ6N2m+M5RLVD66kUXJEJ21XoN8xgHiW3XkbSvnxDwRl9BfcLc8w== X-Received: by 2002:a17:902:4383:: with SMTP id j3-v6mr30098556pld.265.1539946243744; Fri, 19 Oct 2018 03:50:43 -0700 (PDT) From: Li Qiang To: kraxel@redhat.com Date: Fri, 19 Oct 2018 03:50:35 -0700 Message-Id: <1539946236-18028-2-git-send-email-liq3ea@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1539946236-18028-1-git-send-email-liq3ea@gmail.com> References: <1539946236-18028-1-git-send-email-liq3ea@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::643 Subject: [Qemu-devel] [PATCH 1/2] hw: ccid-card-emulated: introduce clean_event_notifier X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Li Qiang , liq3ea@163.com, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Call it in device unrealize function. Signed-off-by: Li Qiang --- hw/usb/ccid-card-emulated.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/usb/ccid-card-emulated.c b/hw/usb/ccid-card-emulated.c index 5c8b3c9..b356edb 100644 --- a/hw/usb/ccid-card-emulated.c +++ b/hw/usb/ccid-card-emulated.c @@ -409,6 +409,12 @@ static int init_event_notifier(EmulatedState *card, Er= ror **errp) return 0; } =20 +static void clean_event_notifier(EmulatedState *card) +{ + event_notifier_set_handler(&card->notifier, NULL); + event_notifier_cleanup(&card->notifier); +} + #define CERTIFICATES_DEFAULT_DB "/etc/pki/nssdb" #define CERTIFICATES_ARGS_TEMPLATE\ "db=3D\"%s\" use_hw=3Dno soft=3D(,Virtual Reader,CAC,,%s,%s,%s)" @@ -556,6 +562,7 @@ static void emulated_unrealize(CCIDCardState *base, Err= or **errp) qemu_cond_signal(&card->handle_apdu_cond); qemu_thread_join(&card->apdu_thread_id); =20 + clean_event_notifier(card); /* threads exited, can destroy all condvars/mutexes */ qemu_cond_destroy(&card->handle_apdu_cond); qemu_mutex_destroy(&card->handle_apdu_mutex); --=20 1.8.3.1 From nobody Wed May 15 18:49:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=gmail.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1539946359525947.6379947201659; Fri, 19 Oct 2018 03:52:39 -0700 (PDT) Received: from localhost ([::1]:48526 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gDSOF-0006sA-Ut for importer@patchew.org; Fri, 19 Oct 2018 06:52:24 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57150) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gDSMq-0006GE-KQ for qemu-devel@nongnu.org; Fri, 19 Oct 2018 06:50:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gDSMn-0001T7-CU for qemu-devel@nongnu.org; Fri, 19 Oct 2018 06:50:56 -0400 Received: from mail-pl1-x641.google.com ([2607:f8b0:4864:20::641]:38344) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gDSMn-0001Mh-1K for qemu-devel@nongnu.org; Fri, 19 Oct 2018 06:50:53 -0400 Received: by mail-pl1-x641.google.com with SMTP id q19-v6so12641501pll.5 for ; Fri, 19 Oct 2018 03:50:46 -0700 (PDT) Received: from localhost.localdomain.localdomain ([103.65.40.65]) by smtp.gmail.com with ESMTPSA id t64-v6sm42884856pfb.44.2018.10.19.03.50.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 19 Oct 2018 03:50:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TIGzoKqij/nRCgv4gNsQniF5Gw2tSa9hzvJ9fVS8nXU=; b=JH7s4VZCpLJXeYdfWuTmMTjmFIYNp8oCBSAQ0sNXRYjQc6T9X3PAxZOKTIJpPJh2D7 qAHBIgUNUpCQFBXW6RVZDRKqhEFcr5XbkwfjZz3+MPlsm9gA9OHOPF5NvP8yJ+8pJVqz 1F09c5r8c9LPgVOW6yEk8Jcuy+tPo1TOnkg0zz0SCZTJIx+2ABjYainMXLX+Jq3O3N2b jxH5m90NH6CfqNXwCRVoJtGAPlkoqVCVBtiS9DmW3fnL8mGbPAlS0ljEnpz2RrBlJm2A 15t5QbkVSRektnJYYttRiynxoKcKdmIQsBwqAb3LklZZTtbd3y30ZH0Y6w3+vvt3CS6b KHPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=TIGzoKqij/nRCgv4gNsQniF5Gw2tSa9hzvJ9fVS8nXU=; b=Mzs/aUuOVKEtJ1emUu7NYeePU8JnlMtBE8a3GaP68JwBO7fgjDf93aM1GuNRRsAtia CEJtVr19ART/MIJxoyp0A1Sftz12ot46MwxDl5Q54/msdNIzp9l1LQ5H2NggUQ1tV1i1 b4ODdG0S8ebnG6x3hJbmLm+O/64wXHQGvF6KZzlv4PLFD8mubpRvS5PErrWixLhn4rqA Ef25mVlftJWyQ15Fh/dDDLKyU59sphkwIk45DB0iGuTtQgPHzjLodQtNiOmJf7qO4Vjz 6MrFyFFcPU5JoS8yU5jFZS3L5racAmz5Sy4B4zQdBfmtI6U90pDEK9DyehhL8CCeGSKe ZbNg== X-Gm-Message-State: ABuFfoiDaXcAzubaSNEwu6uuA8BbFTBVR2hiu1AfBD0aQ5/+c6YRVvh8 xnHEQJHgqfllDK85zN2vPirRWzAq X-Google-Smtp-Source: ACcGV629je7sbC6nJXuvFAKy8bVDFO/A9Qz+2+8I1w/TNdDpiQCtoLcJdN+9OOEGuJBV2LX9gUnT3w== X-Received: by 2002:a17:902:7109:: with SMTP id a9-v6mr33523731pll.310.1539946245629; Fri, 19 Oct 2018 03:50:45 -0700 (PDT) From: Li Qiang To: kraxel@redhat.com Date: Fri, 19 Oct 2018 03:50:36 -0700 Message-Id: <1539946236-18028-3-git-send-email-liq3ea@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1539946236-18028-1-git-send-email-liq3ea@gmail.com> References: <1539946236-18028-1-git-send-email-liq3ea@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::641 Subject: [Qemu-devel] [PATCH 2/2] hw: ccid-card-emulated: cleanup resource when realize in error path X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Li Qiang , liq3ea@163.com, qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Li Qiang --- hw/usb/ccid-card-emulated.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/hw/usb/ccid-card-emulated.c b/hw/usb/ccid-card-emulated.c index b356edb..25976ed 100644 --- a/hw/usb/ccid-card-emulated.c +++ b/hw/usb/ccid-card-emulated.c @@ -499,7 +499,7 @@ static void emulated_realize(CCIDCardState *base, Error= **errp) card->reader =3D NULL; card->quit_apdu_thread =3D 0; if (init_event_notifier(card, errp) < 0) { - return; + goto out1; } =20 card->backend =3D 0; @@ -513,7 +513,7 @@ static void emulated_realize(CCIDCardState *base, Error= **errp) for (ptable =3D backend_enum_table; ptable->name !=3D NULL; ++ptab= le) { error_append_hint(errp, "%s\n", ptable->name); } - return; + goto out2; } =20 /* TODO: a passthru backened that works on local machine. third card t= ype?*/ @@ -523,31 +523,39 @@ static void emulated_realize(CCIDCardState *base, Err= or **errp) } else { error_setg(errp, "%s: you must provide all three certs for" " certificates backend", TYPE_EMULATED_CCID); - return; + goto out2; } } else { if (card->backend !=3D BACKEND_NSS_EMULATED) { error_setg(errp, "%s: bad backend specified. The options are:%= s" " (default), %s.", TYPE_EMULATED_CCID, BACKEND_NSS_EMULATED_NAME, BACKEND_CERTIFICATES_NAM= E); - return; + goto out2; } if (card->cert1 !=3D NULL || card->cert2 !=3D NULL || card->cert3 = !=3D NULL) { error_setg(errp, "%s: unexpected cert parameters to nss emulat= ed " "backend", TYPE_EMULATED_CCID); - return; + goto out2; } /* default to mirroring the local hardware readers */ ret =3D wrap_vcard_emul_init(NULL); } if (ret !=3D VCARD_EMUL_OK) { error_setg(errp, "%s: failed to initialize vcard", TYPE_EMULATED_C= CID); - return; + goto out2; } qemu_thread_create(&card->event_thread_id, "ccid/event", event_thread, card, QEMU_THREAD_JOINABLE); qemu_thread_create(&card->apdu_thread_id, "ccid/apdu", handle_apdu_thr= ead, card, QEMU_THREAD_JOINABLE); + +out2: + clean_event_notifier(card); +out1: + qemu_cond_destroy(&card->handle_apdu_cond); + qemu_mutex_destroy(&card->handle_apdu_mutex); + qemu_mutex_destroy(&card->vreader_mutex); + qemu_mutex_destroy(&card->event_list_mutex); } =20 static void emulated_unrealize(CCIDCardState *base, Error **errp) --=20 1.8.3.1