Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 May 2024 09:24:39 +0800
From:      Zhenlei Huang <zlei@FreeBSD.org>
To:        Ed Maste <emaste@freebsd.org>
Cc:        "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org>
Subject:   Re: git: f7d45c5443ed - main - bhyve: avoid side effect in assertion
Message-ID:  <87605178-E3BF-4B48-B1D9-2D54EE2FADA7@FreeBSD.org>
In-Reply-To: <CD1C51C4-53FC-484A-BEFE-81242E8A7C09@FreeBSD.org>
References:  <202405172000.44HK0Xw3049841@gitrepo.freebsd.org> <CD1C51C4-53FC-484A-BEFE-81242E8A7C09@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help


> On May 18, 2024, at 8:57 AM, Zhenlei Huang <zlei@FreeBSD.org> wrote:
>=20
>=20
>=20
>> On May 18, 2024, at 4:00 AM, Ed Maste <emaste@freebsd.org> wrote:
>>=20
>> The branch main has been updated by emaste:
>>=20
>> URL: =
https://cgit.FreeBSD.org/src/commit/?id=3Df7d45c5443edc99857fdda19c68301b5=
ec4a8971
>>=20
>> commit f7d45c5443edc99857fdda19c68301b5ec4a8971
>> Author:     Pierre Pronchery <pierre@freebsdfoundation.org>
>> AuthorDate: 2024-05-17 07:31:32 +0000
>> Commit:     Ed Maste <emaste@FreeBSD.org>
>> CommitDate: 2024-05-17 19:45:18 +0000
>>=20
>>   bhyve: avoid side effect in assertion
>>=20
>>   An assert() was setting the error variable instead of checking it.
>>=20
>>   Reported by:    Coverity Scan
>>   CID:            1521431
>>   Reviewed by:    jhb
>>   Sponsored by:   The FreeBSD Foundation
>>   Pull Request:   https://github.com/freebsd/freebsd-src/pull/1244
>> ---
>> usr.sbin/bhyve/tpm_ppi_qemu.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>=20
>> diff --git a/usr.sbin/bhyve/tpm_ppi_qemu.c =
b/usr.sbin/bhyve/tpm_ppi_qemu.c
>> index ad66ecb09683..239d39184589 100644
>> --- a/usr.sbin/bhyve/tpm_ppi_qemu.c
>> +++ b/usr.sbin/bhyve/tpm_ppi_qemu.c
>> @@ -161,7 +161,7 @@ tpm_ppi_deinit(void *sc)
>> 	ppi =3D sc;
>>=20
>> 	error =3D unregister_mem(&ppi_mmio);
>> -	assert(error =3D 0);
>> +	assert(error =3D=3D 0);
>=20
> Emm, does that not get caught by compilers ?

Unfortunately not. assert is defined as a macro as such

```
#define assert(e)       ((e) ? (void)0 : __assert(__func__, __FILE__, \
                            __LINE__, #e))
```

So `e` is enclosed with () and compiler can not catch that.

>=20
>>=20
>> 	free(ppi);
>> }
>=20
>=20
>=20






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?87605178-E3BF-4B48-B1D9-2D54EE2FADA7>