Message ID | 20181210094454.21144-1-jasowang@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | Fix various issue of vhost | expand |
From: Jason Wang <jasowang@redhat.com> Date: Mon, 10 Dec 2018 17:44:50 +0800 > This series tries to fix various issues of vhost: > > - Patch 1 adds a missing write barrier between used idx updating and > logging. > - Patch 2-3 brings back the protection of device IOTLB through vq > mutex, this fixes possible use after free in device IOTLB entries. > - Patch 4 fixes the diry page logging when device IOTLB is > enabled. We should done through GPA instead of GIOVA, this was done > through logging through iovec and traversing GPA->HPA list for the > GPA. > > Please consider them for -stable. Looks like the kbuild robot found some problems. ->used is a pointer (which might be 32-bit) and you're casting it to a u64 in the translate_desc() calls of patch #4. Please make sure that you don't actually require the full domain of a u64 in these values, as obviously if vq->used is a pointer you will only get a 32-bit domain on 32-bit architectures.
On 2018/12/11 上午3:47, David Miller wrote: > From: Jason Wang <jasowang@redhat.com> > Date: Mon, 10 Dec 2018 17:44:50 +0800 > >> This series tries to fix various issues of vhost: >> >> - Patch 1 adds a missing write barrier between used idx updating and >> logging. >> - Patch 2-3 brings back the protection of device IOTLB through vq >> mutex, this fixes possible use after free in device IOTLB entries. >> - Patch 4 fixes the diry page logging when device IOTLB is >> enabled. We should done through GPA instead of GIOVA, this was done >> through logging through iovec and traversing GPA->HPA list for the >> GPA. >> >> Please consider them for -stable. > Looks like the kbuild robot found some problems. > > ->used is a pointer (which might be 32-bit) and you're casting it to > a u64 in the translate_desc() calls of patch #4. > > Please make sure that you don't actually require the full domain of > a u64 in these values, as obviously if vq->used is a pointer you will > only get a 32-bit domain on 32-bit architectures. It seems the reason is that I cast from plain void pointer directly. Let me cast it to uintptr_t first. Thanks >