Hi Philippe,

>> It seems there is no need to keep the inuse field signed and end up with
>> compiler warnings for sign-compare.
>>   CC       libvhost-user.o
>> libvhost-user.c: In function ‘vu_queue_pop’:
>> libvhost-user.c:2763:19: error: comparison of integer expressions of 
>> different signedness: ‘int’ and ‘unsigned int’ [-Werror=sign-compare]
>>  2763 |     if (vq->inuse >= vq->vring.num) {
>>       |                   ^~
>> libvhost-user.c: In function ‘vu_queue_rewind’:
>> libvhost-user.c:2808:13: error: comparison of integer expressions of 
>> different signedness: ‘unsigned int’ and ‘int’ [-Werror=sign-compare]
>>  2808 |     if (num > vq->inuse) {
>>       |             ^
>> Instead of casting the comparision to unsigned int, just make the inuse
>> field unsigned int in the fist place.
>> Signed-off-by: Marcel Holtmann <mar...@holtmann.org>
>> ---
>>  subprojects/libvhost-user/libvhost-user.h | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>> diff --git a/subprojects/libvhost-user/libvhost-user.h 
>> b/subprojects/libvhost-user/libvhost-user.h
>> index aea7ec5061d5..8cda9b8f577a 100644
>> --- a/subprojects/libvhost-user/libvhost-user.h
>> +++ b/subprojects/libvhost-user/libvhost-user.h
>> @@ -343,7 +343,7 @@ typedef struct VuVirtq {
>>      /* Notification enabled? */
>>      bool notification;
>>  -    int inuse;
>> +    unsigned int inuse;
> 
> Another use in subprojects/libvduse/libvduse.c.
> 
> Possibly both could be renamed refcount which is more meaningful.

I quickly tried libvduse.[ch] and it has clearly less warnings than
libvhost-user, but some things could be applied there as well.

I looks like only the _GNU_SOURCE and the unsigned int inuse are
applicable, but there is a strict-aliasing issue that I first have
to fully understand.

If patches are acceptable, I send them as well for libvduse.

Regards

Marcel


Reply via email to