Andy Yan f57715b5aa drm/rockchip: cleanup fb when drm_gem_fb_afbc_init failed
In the function drm_gem_fb_init_with_funcs, the framebuffer (fb) and
its corresponding object ID have already been registered.

So we need to do cleanup the drm framebuffer if the subsequent execution
of drm_gem_fb_afbc_init fails.

Or we will meet list_del corruption like bellow when userspace call
drm_mode_rmfb to remove all the previous created fb:

[  202.019304] list_del corruption. prev->next should be ffffff817eba4608, but was 0000000000000000. (prev=ffffff817eba5f08)
[  202.019340] kernel BUG at lib/list_debug.c:61!
[  202.019346] Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT SMP
[  202.021421] Modules linked in: bcmdhd(O) r8168
[  202.021884] CPU: 7 PID: 395 Comm: binder:339_3 Tainted: G W  O       6.1.118 #59
[  202.022648] Hardware name: Rockchip RK3588 EVB1 LP4 V10 Board (DT)
[  202.023249] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  202.023925] pc : __list_del_entry_valid+0xbc/0xd0
[  202.024409] lr : __list_del_entry_valid+0xbc/0xd0
[  202.024889] sp : ffffffc00dd8bb40
[  202.025248] x29: ffffffc00dd8bb40 x28: 00000000000000af x27:ffffff81088ab600
[  202.025936] x26: 0000000000000004 x25: ffffff810880eac0 x24:ffffffc00962bc98
[  202.026623] x23: 0000000000000000 x22: ffffff81002be000 x21:ffffff817eba4608
[  202.027310] x20: ffffff817eba4600 x19: ffffff81002be218 x18:ffffffc00dbc5080
[  202.027998] x17: 20747562202c3830 x16: ffffffffffffffff x15:0000000000000004
[  202.028684] x14: ffffffc00a06c980 x13: 0000000000001d5a x12:0000000000000003
[  202.029372] x11: 000000010000dd5a x10: c00000010000dd5a x9 :02c01f0f68978400
[  202.030059] x8 : 02c01f0f68978400 x7 : 205b5d3430333931 x6 :302e32303220205b
[  202.030747] x5 : ffffffc00a493617 x4 : ffffffc00dd8b897 x3 :0000000000000000
[  202.031434] x2 : 0000000000000000 x1 : ffffffc00dd8b900 x0 :000000000000006d
[  202.032121] Call trace:
[  202.032395]  __list_del_entry_valid+0xbc/0xd0
[  202.032843]  drm_framebuffer_cleanup+0x34/0x80
[  202.033305]  __rockchip_drm_fb_destroy+0x18/0x1ec
[  202.033789]  rockchip_drm_fb_destroy+0x18/0x40
[  202.034247]  drm_framebuffer_free+0x30/0x40
[  202.034674]  drm_mode_object_put+0x60/0xac
[  202.035100]  drm_mode_rmfb+0x170/0x1a4
[  202.035493]  drm_mode_rmfb_ioctl+0x14/0x20
[  202.035920]  drm_ioctl_kernel+0x80/0xf8
[  202.036324]  drm_ioctl+0x2d4/0x554

Change-Id: I191e2b2a1b8229da1642ac58a6adc8fc3a3d71ea
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
2025-05-09 03:04:36 +00:00
2025-01-25 10:26:37 +08:00
2025-01-10 17:48:57 +08:00
2025-01-10 17:48:57 +08:00
2025-01-25 10:26:37 +08:00
2025-01-10 17:48:57 +08:00
2024-11-17 15:07:22 +01:00

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.
Description
No description provided
Readme 7.9 GiB
Languages
C 97.7%
Assembly 1.6%
Makefile 0.3%
Perl 0.1%