Old bug in patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c

Mikhail T. mi+m at aldan.algebra.com
Wed Jun 24 04:15:51 UTC 2020


I don’t know - the compiler only warned about the bzero :-)

But you may be right - and the module never worked for me anyway...

-- 
Sent from mobile device, please, pardon shorthand.

> 23 черв. 2020 р. о 14:47 Martin Simmons <martin at lispworks.com> пише:
> 
> Is the memcpy wrong too?  It looks like fsinfo.serial is a single uint32_t
> (i.e. 32 bits), but mp->mnt_stat.f_fsid is a pair of int32_t (i.e. 64 bits),
> so copying this pair from fsinfo.serial is wrong.
> 
> __Martin
> 
> 
>>>>>> On Mon, 22 Jun 2020 14:22:05 -0400, Mikhail T said:
>> 
>> Gentlemen!
>> 
>> An old bug in the patch is causing compiler-warnings, and leads to 
>> erroneous behavior where pointers are bigger than 32-bit.
>> 
>> Moreover, given the memcpy right after it, the bzero is simply not 
>> needed at all. Instead of removing the bogus ampersand, the entire line 
>> should be deleted. (I would've replaced the memcpy with an assignment 
>> too, but that's not as pressing.)
>> 
>> Can I commit this?
>> 
>>    Index: files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c
>>    ===================================================================
>>    --- files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c
>>    (revision 539883)
>>    +++ files/patch-src_VBox_Additions_freebsd_vboxvfs_vboxvfs__vfsops.c
>>    (working copy)
>>    @@ -11,7 +11,7 @@
>>        *
>>        * This file is part of VirtualBox Open Source Edition (OSE), as
>>        * available from http://www.virtualbox.org. This file is free
>>    software;
>>    -@@ -14,245 +9,479 @@
>>    +@@ -14,245 +9,478 @@
>>        * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
>>        * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
>>        */
>>    @@ -466,7 +466,6 @@
>>      +
>>      +      MNT_ILOCK(mp);
>>      +      mp->mnt_data = vboxfsmp;
>>    *-+      bzero(&mp->mnt_stat.f_fsid, sizeof(&mp->mnt_stat.f_fsid));*
>>      +      /* f_fsid is int32_t but serial is uint32_t, convert */
>>      +      memcpy(&mp->mnt_stat.f_fsid, &fsinfo.serial,
>>    sizeof(mp->mnt_stat.f_fsid));
>>      +      mp->mnt_flag |= MNT_LOCAL;
>> 
>> Thanks. Yours,
>> 
>>    -mi
>> 
>> _______________________________________________
>> freebsd-emulation at freebsd.org mailing list
>> https://lists.freebsd.org/mailman/listinfo/freebsd-emulation
>> To unsubscribe, send any mail to "freebsd-emulation-unsubscribe at freebsd.org"
>> 



More information about the freebsd-emulation mailing list