Commit 83390bfe authored by Saurabh Sengar's avatar Saurabh Sengar Committed by Xiangwei Li
Browse files

fbdev: hyperv_fb: Simplify hvfb_putmem

mainline inclusion
from mainline-v6.14-rc7
commit f5e728a50bb17336a20803dde488515b833ecd1d
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBY436
CVE: CVE-2025-21976

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f5e728a50bb17336a20803dde488515b833ecd1d



--------------------------------

The device object required in 'hvfb_release_phymem' function
for 'dma_free_coherent' can also be obtained from the 'info'
pointer, making 'hdev' parameter in 'hvfb_putmem' redundant.
Remove the unnecessary 'hdev' argument from 'hvfb_putmem'.

Signed-off-by: default avatarSaurabh Sengar <ssengar@linux.microsoft.com>
Reviewed-by: default avatarMichael Kelley <mhklinux@outlook.com>
Tested-by: default avatarMichael Kelley <mhklinux@outlook.com>
Link: https://lore.kernel.org/r/1740845791-19977-2-git-send-email-ssengar@linux.microsoft.com


Signed-off-by: default avatarWei Liu <wei.liu@kernel.org>
Message-ID: <1740845791-19977-2-git-send-email-ssengar@linux.microsoft.com>
Signed-off-by: default avatarXiangwei Li <liwei728@huawei.com>
parent 2d7de42a
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -973,7 +973,7 @@ static phys_addr_t hvfb_get_phymem(struct hv_device *hdev,
}

/* Release contiguous physical memory */
static void hvfb_release_phymem(struct hv_device *hdev,
static void hvfb_release_phymem(struct device *device,
				phys_addr_t paddr, unsigned int size)
{
	unsigned int order = get_order(size);
@@ -981,7 +981,7 @@ static void hvfb_release_phymem(struct hv_device *hdev,
	if (order <= MAX_ORDER)
		__free_pages(pfn_to_page(paddr >> PAGE_SHIFT), order);
	else
		dma_free_coherent(&hdev->device,
		dma_free_coherent(device,
				  round_up(size, PAGE_SIZE),
				  phys_to_virt(paddr),
				  paddr);
@@ -1100,7 +1100,7 @@ static int hvfb_getmem(struct hv_device *hdev, struct fb_info *info)
}

/* Release the framebuffer */
static void hvfb_putmem(struct hv_device *hdev, struct fb_info *info)
static void hvfb_putmem(struct fb_info *info)
{
	struct hvfb_par *par = info->par;

@@ -1109,7 +1109,7 @@ static void hvfb_putmem(struct hv_device *hdev, struct fb_info *info)
		iounmap(info->screen_base);
		vmbus_free_mmio(par->mem->start, screen_fb_size);
	} else {
		hvfb_release_phymem(hdev, info->fix.smem_start,
		hvfb_release_phymem(info->device, info->fix.smem_start,
				    screen_fb_size);
	}

@@ -1223,7 +1223,7 @@ static int hvfb_probe(struct hv_device *hdev,

error:
	fb_deferred_io_cleanup(info);
	hvfb_putmem(hdev, info);
	hvfb_putmem(info);
error2:
	vmbus_close(hdev->channel);
error1:
@@ -1252,7 +1252,7 @@ static void hvfb_remove(struct hv_device *hdev)
	vmbus_close(hdev->channel);
	hv_set_drvdata(hdev, NULL);

	hvfb_putmem(hdev, info);
	hvfb_putmem(info);
	framebuffer_release(info);
}