From nobody Wed Apr 24 23:04:30 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1565882182; cv=none; d=zoho.com; s=zohoarc; b=hEKbc6ajCRGrI6x67IT3Bn4XDT/CHDb8SHeXEU4QIJjmBPYOKZnM8LzMrEakc0t3Sv6v9dkBksg8bKwe30X8XQdV64IaBrHTCMwWxpC9yTV7q4jI3pp2ryFDJzIW+WImEGhxIuLK9gnD/G2ycvzD+gAs7ITVC8/kKypLzjY4laE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565882182; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=aYyE2LVDMMPA2+4BAIncfUHPz5G617lpC/+wqbouCMY=; b=VYCmjxS85E9uqS4B/WrL5PMiO5ZTbrWUe0f/acHDBNgj5C6f9f6SMPjqgvZ5dtOe45noBA2BVxHaDJv9Jg7MuYjKDq+Vw5lxT09zubjDJp0mZ7N0ysc+I4u6NpfRnOh4fOmVo4L0CCQwkWbqmeReVR4zvz4AKzm5vMp0JSH3BOA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1565882182808526.076742522762; Thu, 15 Aug 2019 08:16:22 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 414EC8E779; Thu, 15 Aug 2019 15:16:21 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1A79B1000329; Thu, 15 Aug 2019 15:16:21 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id D7B3624F30; Thu, 15 Aug 2019 15:16:20 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x7FFG21B010041 for ; Thu, 15 Aug 2019 11:16:02 -0400 Received: by smtp.corp.redhat.com (Postfix) id 7477517CCF; Thu, 15 Aug 2019 15:16:02 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.2.30]) by smtp.corp.redhat.com (Postfix) with ESMTP id F3E8D1EA for ; Thu, 15 Aug 2019 15:16:01 +0000 (UTC) From: Michal Privoznik To: libvir-list@redhat.com Date: Thu, 15 Aug 2019 17:15:56 +0200 Message-Id: <569712873c301f95cb51556e01dc34222c73b83d.1565882130.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/2] ci: Allow gdb in containers X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Thu, 15 Aug 2019 15:16:21 +0000 (UTC) Content-Type: text/plain; charset="utf-8" The gdb requires ptrace capability, but the way we run containers now is that they drop every capability. Preserve SYS_PTRACE then. Signed-off-by: Michal Privoznik Reviewed-by: Erik Skultety --- Makefile.ci | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.ci b/Makefile.ci index 8857c953b2..977e0445c6 100644 --- a/Makefile.ci +++ b/Makefile.ci @@ -167,6 +167,7 @@ CI_ENGINE_ARGS =3D \ --volume $(CI_HOST_SRCDIR):$(CI_CONT_SRCDIR):z \ --workdir $(CI_CONT_SRCDIR) \ --ulimit nofile=3D$(CI_ULIMIT_FILES):$(CI_ULIMIT_FILES) \ + --cap-add=3DSYS_PTRACE \ $(NULL) =20 ci-check-engine: --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Wed Apr 24 23:04:30 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1565882168; cv=none; d=zoho.com; s=zohoarc; b=Wp6wStghVPNjrGoW2IuWvUDMoc8Ja04fkSaI5Zm6jnjF8wdXh81uKuJm/YxT2sWWe0y24LmejOMV4Xr/T+n2sT1C6zUldvw1j2pjJ2UV7B7wtGCx/+abuIIn0K0owOoWFEAZNTMWmLKuCBTlu9afXtnFEcoaB/pi4r7jASrhVVY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565882168; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=Oul1bE1YHQ9oPfIU1Utx84hHMz8NdnxBZwRKkkXbO6U=; b=nTKEGbhqdFhNmnT6nm3cAVvfWfuPLTfyxczFVIHT7AOlWQoVGFkRqjKmpiJe5Yi83UFH4CF3JO8G/VPblhQzfdG7dX2a3QntvXhcu9W5E2Jf2UE5gK/vEvcfYuvTXlY7gBJmrfoa46dGvoRpakp6Dtv3l6Sw+BVRwjboEHedwbs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 156588216885443.53562489492299; Thu, 15 Aug 2019 08:16:08 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 967EB300BEA6; Thu, 15 Aug 2019 15:16:07 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 0078117ADA; Thu, 15 Aug 2019 15:16:06 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 66B9E18089C8; Thu, 15 Aug 2019 15:16:04 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id x7FFG3wc010051 for ; Thu, 15 Aug 2019 11:16:03 -0400 Received: by smtp.corp.redhat.com (Postfix) id 3FC4D1797F; Thu, 15 Aug 2019 15:16:03 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.2.30]) by smtp.corp.redhat.com (Postfix) with ESMTP id BF39F1EA for ; Thu, 15 Aug 2019 15:16:02 +0000 (UTC) From: Michal Privoznik To: libvir-list@redhat.com Date: Thu, 15 Aug 2019 17:15:57 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/2] virpcimock: Mock __open_2() X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Thu, 15 Aug 2019 15:16:08 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Hold on to your hat, this is going to be a wild ride. As nearly nothing in glic, nor open() is a real function. Just look into bits/fcntl2.h and you'll see that open() is actually a thin wrapper that calls either __open_alias() or __open_2(). Now, before 801ebb5edb6 the open() done in virPCIDeviceConfigOpenInternal() had a constant oflags (we were opening the pci config with O_RDWR). And since we were not passing any mode nor O_CREAT the wrapper decided to call __open_alias() which was open() provided by our mock. So far so good. But after the referenced commit, the oflags is no longer compile time constant and therefore the wrapper calls __open_2() which we don't mock and thus the real __open_2() from glibc was called and thus we did try to open real path from host's /sys. This of course fails with variety of errors. Signed-off-by: Michal Privoznik Reviewed-by: Erik Skultety Reviewed-by: J=C3=A1n Tomko --- tests/virpcimock.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/tests/virpcimock.c b/tests/virpcimock.c index beb5e1490d..829d61cd3f 100644 --- a/tests/virpcimock.c +++ b/tests/virpcimock.c @@ -32,6 +32,7 @@ =20 static int (*real_access)(const char *path, int mode); static int (*real_open)(const char *path, int flags, ...); +static int (*real___open_2)(const char *path, int flags); static int (*real_close)(int fd); static DIR * (*real_opendir)(const char *name); static char *(*real_virFileCanonicalizePath)(const char *path); @@ -805,6 +806,7 @@ init_syms(void) =20 VIR_MOCK_REAL_INIT(access); VIR_MOCK_REAL_INIT(open); + VIR_MOCK_REAL_INIT(__open_2); VIR_MOCK_REAL_INIT(close); VIR_MOCK_REAL_INIT(opendir); VIR_MOCK_REAL_INIT(virFileCanonicalizePath); @@ -932,6 +934,33 @@ open(const char *path, int flags, ...) return ret; } =20 + +int +__open_2(const char *path, int flags) +{ + VIR_AUTOFREE(char *) newpath =3D NULL; + int ret; + + init_syms(); + + if (STRPREFIX(path, SYSFS_PCI_PREFIX) && + getrealpath(&newpath, path) < 0) + return -1; + + ret =3D real___open_2(newpath ? newpath : path, flags); + + /* Catch both: /sys/bus/pci/drivers/... and + * /sys/bus/pci/device/.../driver/... */ + if (ret >=3D 0 && STRPREFIX(path, SYSFS_PCI_PREFIX) && + strstr(path, "driver") && add_fd(ret, path) < 0) { + real_close(ret); + ret =3D -1; + } + + return ret; +} + + DIR * opendir(const char *path) { --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list