Windows Version
Microsoft Windows [Version 10.0.26200.8117]
WSL Version
2.7.1.0
Are you using WSL 1 or WSL 2?
Kernel Version
6.6.123.2-microsoft-standard-WSL2+ (running; 6.18.20.1 is what fails to build)
Distro Version
Ubuntu 25.10
Other Software
- GCC 15.2.0 (Ubuntu 15.2.0-4ubuntu4)
- Host arch: aarch64 (Snapdragon X Elite)
Repro Steps
git clone --depth 1 -b linux-msft-wsl-6.18.20.1 \
https://github.com/microsoft/WSL2-Linux-Kernel.git
cd WSL2-Linux-Kernel
cp Microsoft/config-wsl-arm64 .config # or config-wsl
make ARCH=arm64 olddefconfig # or ARCH=x86
make ARCH=arm64 -j"$(nproc)" Image # or bzImage
Expected Behavior
Kernel builds cleanly from the linux-msft-wsl-6.18.20.1 release tag using the shipped default config.
Actual Behavior
drivers/hv/dxgkrnl/dxgsyncfile.c: In function 'dxgdmafence_signaled':
drivers/hv/dxgkrnl/dxgsyncfile.c:449:46: error: passing argument 1 of
'__dma_fence_is_later' makes pointer from integer without a cast
[-Wint-conversion]
449 | return __dma_fence_is_later(syncpoint->fence_value, fence->seqno,
./include/linux/dma-fence.h:471:59: note: expected 'struct dma_fence *'
but argument is of type 'u64'
drivers/hv/dxgkrnl/dxgsyncfile.c:450:42: error: passing argument 3 of
'__dma_fence_is_later' makes integer from pointer without a cast
[-Wint-conversion]
Root cause
__dma_fence_is_later changed signature between 6.6.y and 6.18.y:
| Tag |
include/linux/dma-fence.h |
linux-msft-wsl-6.6.123.2 |
(u64 f1, u64 f2, const struct dma_fence_ops *ops) |
linux-msft-wsl-6.18.20.1 |
(struct dma_fence *fence, u64 f1, u64 f2) |
Every other in-tree caller was updated to the new form (dma-fence-chain.c, sw_sync.c, xe_sched_job.c, xe_hw_fence.c), but drivers/hv/dxgkrnl/dxgsyncfile.c:449 still uses the old calling convention — so dxgkrnl is inconsistent with the very header it includes. Verified by diffing the file between the two tags: the dxgkrnl line is byte-identical in 6.6.123.2 and 6.18.20.1 despite the header change, i.e., the driver was simply missed during the 6.6 → 6.18 rebase.
The file is arch-independent and CONFIG_DXGKRNL=y in both config-wsl and config-wsl-arm64, so this reproduces on any host building the release tag from source. Confirmed firsthand on aarch64.
Fix
One-line, pure API-compat, no semantic change:
--- a/drivers/hv/dxgkrnl/dxgsyncfile.c
+++ b/drivers/hv/dxgkrnl/dxgsyncfile.c
@@ -446,8 +446,7 @@ static bool dxgdmafence_signaled(struct dma_fence *fence)
syncpoint = to_syncpoint(fence);
if (syncpoint == 0)
return true;
- return __dma_fence_is_later(syncpoint->fence_value, fence->seqno,
- fence->ops);
+ return __dma_fence_is_later(fence, syncpoint->fence_value, fence->seqno);
}
Builds cleanly on aarch64 with config-wsl-arm64 + this patch.
Why this tag probably shipped (compiler note)
Both Microsoft/config-wsl and Microsoft/config-wsl-arm64 on this tag begin with:
CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.2.0"
CONFIG_GCC_VERSION=130200
The -Wint-conversion / -Wincompatible-pointer-types diagnostics this bug triggers were warnings on GCC ≤ 13 but were promoted to errors by default in GCC 14. So on GCC 13 this code warns but still produces a working image; on any current mainstream distro toolchain (Debian 13, Ubuntu 24.04+, Fedora 40+, Arch, openSUSE Tumbleweed — all GCC 14 or 15), it's a hard failure. That strongly suggests whatever verifies the public tag before publishing is still on GCC 13, which means this class of regression slips through silently. Bumping release-verification to GCC ≥14 would catch all four of the recent "tag doesn't build" reports (#12431, #13086, #13511, this one) going forward.
Diagnostic Logs
N/A — pre-boot compile failure, not a runtime issue.
cc @chessturo — flagging since you cut the linux-msft-wsl-6.18.20.1 tag.
Windows Version
Microsoft Windows [Version 10.0.26200.8117]
WSL Version
2.7.1.0
Are you using WSL 1 or WSL 2?
Kernel Version
6.6.123.2-microsoft-standard-WSL2+ (running; 6.18.20.1 is what fails to build)
Distro Version
Ubuntu 25.10
Other Software
Repro Steps
git clone --depth 1 -b linux-msft-wsl-6.18.20.1 \ https://github.com/microsoft/WSL2-Linux-Kernel.git cd WSL2-Linux-Kernel cp Microsoft/config-wsl-arm64 .config # or config-wsl make ARCH=arm64 olddefconfig # or ARCH=x86 make ARCH=arm64 -j"$(nproc)" Image # or bzImageExpected Behavior
Kernel builds cleanly from the
linux-msft-wsl-6.18.20.1release tag using the shipped default config.Actual Behavior
Root cause
__dma_fence_is_laterchanged signature between 6.6.y and 6.18.y:include/linux/dma-fence.hlinux-msft-wsl-6.6.123.2(u64 f1, u64 f2, const struct dma_fence_ops *ops)linux-msft-wsl-6.18.20.1(struct dma_fence *fence, u64 f1, u64 f2)Every other in-tree caller was updated to the new form (
dma-fence-chain.c,sw_sync.c,xe_sched_job.c,xe_hw_fence.c), butdrivers/hv/dxgkrnl/dxgsyncfile.c:449still uses the old calling convention — so dxgkrnl is inconsistent with the very header it includes. Verified by diffing the file between the two tags: the dxgkrnl line is byte-identical in 6.6.123.2 and 6.18.20.1 despite the header change, i.e., the driver was simply missed during the 6.6 → 6.18 rebase.The file is arch-independent and
CONFIG_DXGKRNL=yin bothconfig-wslandconfig-wsl-arm64, so this reproduces on any host building the release tag from source. Confirmed firsthand on aarch64.Fix
One-line, pure API-compat, no semantic change:
Builds cleanly on aarch64 with
config-wsl-arm64+ this patch.Why this tag probably shipped (compiler note)
Both
Microsoft/config-wslandMicrosoft/config-wsl-arm64on this tag begin with:The
-Wint-conversion/-Wincompatible-pointer-typesdiagnostics this bug triggers were warnings on GCC ≤ 13 but were promoted to errors by default in GCC 14. So on GCC 13 this code warns but still produces a working image; on any current mainstream distro toolchain (Debian 13, Ubuntu 24.04+, Fedora 40+, Arch, openSUSE Tumbleweed — all GCC 14 or 15), it's a hard failure. That strongly suggests whatever verifies the public tag before publishing is still on GCC 13, which means this class of regression slips through silently. Bumping release-verification to GCC ≥14 would catch all four of the recent "tag doesn't build" reports (#12431, #13086, #13511, this one) going forward.Diagnostic Logs
N/A — pre-boot compile failure, not a runtime issue.
cc @chessturo — flagging since you cut the
linux-msft-wsl-6.18.20.1tag.