Skip to content

Commit 062fd0a

Browse files
committed
Merge tag 'drm-misc-fixes-2024-08-08' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-fixes
A fix for drm/client to prevent a null pointer dereference, a fix for a double-free in drm/bridge-connector, a fix for a gem shmem test, and a fix for async flips updates. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maxime Ripard <mripard@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240808-debonair-smoky-mustang-8b6b3f@houat
2 parents de9c2c6 + 929725b commit 062fd0a

File tree

6 files changed

+29
-20
lines changed

6 files changed

+29
-20
lines changed

Documentation/devicetree/bindings/display/panel/samsung,atna33xc20.yaml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@ properties:
1717
oneOf:
1818
# Samsung 13.3" FHD (1920x1080 pixels) eDP AMOLED panel
1919
- const: samsung,atna33xc20
20-
# Samsung 14.5" WQXGA+ (2880x1800 pixels) eDP AMOLED panel
2120
- items:
22-
- const: samsung,atna45af01
23-
- const: samsung,atna33xc20
21+
- enum:
22+
# Samsung 14.5" WQXGA+ (2880x1800 pixels) eDP AMOLED panel
23+
- samsung,atna45af01
24+
# Samsung 14.5" 3K (2944x1840 pixels) eDP AMOLED panel
25+
- samsung,atna45dc02
26+
- const: samsung,atna33xc20
2427

2528
enable-gpios: true
2629
port: true

drivers/gpu/drm/drm_atomic_uapi.c

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,23 +1071,16 @@ int drm_atomic_set_property(struct drm_atomic_state *state,
10711071
}
10721072

10731073
if (async_flip &&
1074-
prop != config->prop_fb_id &&
1075-
prop != config->prop_in_fence_fd &&
1076-
prop != config->prop_fb_damage_clips) {
1074+
(plane_state->plane->type != DRM_PLANE_TYPE_PRIMARY ||
1075+
(prop != config->prop_fb_id &&
1076+
prop != config->prop_in_fence_fd &&
1077+
prop != config->prop_fb_damage_clips))) {
10771078
ret = drm_atomic_plane_get_property(plane, plane_state,
10781079
prop, &old_val);
10791080
ret = drm_atomic_check_prop_changes(ret, old_val, prop_value, prop);
10801081
break;
10811082
}
10821083

1083-
if (async_flip && plane_state->plane->type != DRM_PLANE_TYPE_PRIMARY) {
1084-
drm_dbg_atomic(prop->dev,
1085-
"[OBJECT:%d] Only primary planes can be changed during async flip\n",
1086-
obj->id);
1087-
ret = -EINVAL;
1088-
break;
1089-
}
1090-
10911084
ret = drm_atomic_plane_set_property(plane,
10921085
plane_state, file_priv,
10931086
prop, prop_value);

drivers/gpu/drm/drm_bridge_connector.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -443,10 +443,8 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
443443
panel_bridge = bridge;
444444
}
445445

446-
if (connector_type == DRM_MODE_CONNECTOR_Unknown) {
447-
kfree(bridge_connector);
446+
if (connector_type == DRM_MODE_CONNECTOR_Unknown)
448447
return ERR_PTR(-EINVAL);
449-
}
450448

451449
if (bridge_connector->bridge_hdmi)
452450
ret = drmm_connector_hdmi_init(drm, connector,
@@ -461,10 +459,8 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
461459
ret = drmm_connector_init(drm, connector,
462460
&drm_bridge_connector_funcs,
463461
connector_type, ddc);
464-
if (ret) {
465-
kfree(bridge_connector);
462+
if (ret)
466463
return ERR_PTR(ret);
467-
}
468464

469465
drm_connector_helper_add(connector, &drm_bridge_connector_helper_funcs);
470466

drivers/gpu/drm/drm_client_modeset.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,11 @@ int drm_client_modeset_probe(struct drm_client_dev *client, unsigned int width,
880880

881881
kfree(modeset->mode);
882882
modeset->mode = drm_mode_duplicate(dev, mode);
883+
if (!modeset->mode) {
884+
ret = -ENOMEM;
885+
break;
886+
}
887+
883888
drm_connector_get(connector);
884889
modeset->connectors[modeset->num_connectors++] = connector;
885890
modeset->x = offset->x;

drivers/gpu/drm/omapdrm/Kconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# SPDX-License-Identifier: GPL-2.0-only
22
config DRM_OMAP
33
tristate "OMAP DRM"
4+
depends on MMU
45
depends on DRM && OF
56
depends on ARCH_OMAP2PLUS || (COMPILE_TEST && PAGE_SIZE_LESS_THAN_64KB)
67
select DRM_KMS_HELPER

drivers/gpu/drm/tests/drm_gem_shmem_test.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,17 @@ static void drm_gem_shmem_test_obj_create_private(struct kunit *test)
102102

103103
sg_init_one(sgt->sgl, buf, TEST_SIZE);
104104

105+
/*
106+
* Set the DMA mask to 64-bits and map the sgtables
107+
* otherwise drm_gem_shmem_free will cause a warning
108+
* on debug kernels.
109+
*/
110+
ret = dma_set_mask(drm_dev->dev, DMA_BIT_MASK(64));
111+
KUNIT_ASSERT_EQ(test, ret, 0);
112+
113+
ret = dma_map_sgtable(drm_dev->dev, sgt, DMA_BIDIRECTIONAL, 0);
114+
KUNIT_ASSERT_EQ(test, ret, 0);
115+
105116
/* Init a mock DMA-BUF */
106117
buf_mock.size = TEST_SIZE;
107118
attach_mock.dmabuf = &buf_mock;

0 commit comments

Comments
 (0)