]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: Fix shift type in amdgpu_debugfs_sdma_sched_mask_set()
authorDan Carpenter <dan.carpenter@linaro.org>
Wed, 8 Jan 2025 09:41:28 +0000 (12:41 +0300)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 9 Jan 2025 21:02:56 +0000 (16:02 -0500)
The "mask" and "val" variables are type u64.  The problem is that the
BIT() macros are type unsigned long which is just 32 bits on 32bit
systems.

It's unlikely that people will be using this driver on 32bit kernels
and even if they did we only use the lower AMDGPU_MAX_SDMA_INSTANCES (16)
bits.  So this bug does not affect anything in real life.

Still, for correctness sake, u64 bit masks should use BIT_ULL().

Fixes: d2e3961ae371 ("drm/amdgpu: add amdgpu_sdma_sched_mask debugfs")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/d39a9325-87a4-4543-b6ec-1c61fca3a6fc@stanley.mountain
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_sdma.c

index 632295bf3875394c7b69935fc62b3803abc83651..174badca27e7d457de939cdfd4bbfaf24c3877df 100644 (file)
@@ -362,13 +362,13 @@ static int amdgpu_debugfs_sdma_sched_mask_set(void *data, u64 val)
        if (!adev)
                return -ENODEV;
 
-       mask = (1 << adev->sdma.num_instances) - 1;
+       mask = BIT_ULL(adev->sdma.num_instances) - 1;
        if ((val & mask) == 0)
                return -EINVAL;
 
        for (i = 0; i < adev->sdma.num_instances; ++i) {
                ring = &adev->sdma.instance[i].ring;
-               if (val & (1 << i))
+               if (val & BIT_ULL(i))
                        ring->sched.ready = true;
                else
                        ring->sched.ready = false;