| From 8108fdcfcf5c508848326eeb600bc232295a48a2 Mon Sep 17 00:00:00 2001 |
| From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Date: Mon, 3 Oct 2016 20:03:22 +0300 |
| Subject: [PATCH 048/299] drm: rcar-du: Fix crash in encoder failure error path |
| |
| When an encoder fails to initialize the driver prints an error message |
| to the kernel log. The message contains the name of the encoder's DT |
| node, which is NULL for internal encoders. Use the of_node_full_name() |
| macro to avoid dereferencing a NULL pointer, print the output number to |
| add more context to the error, and make sure we still own a reference to |
| the encoder's DT node by delaying the of_node_put() call. |
| |
| Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> |
| (cherry picked from commit 05ee29e94acf0d4b3998c3f93374952de8f90176) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/gpu/drm/rcar-du/rcar_du_kms.c | 10 +++++----- |
| 1 file changed, 5 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/gpu/drm/rcar-du/rcar_du_kms.c |
| +++ b/drivers/gpu/drm/rcar-du/rcar_du_kms.c |
| @@ -454,13 +454,13 @@ static int rcar_du_encoders_init_one(str |
| } |
| |
| ret = rcar_du_encoder_init(rcdu, enc_type, output, encoder, connector); |
| - of_node_put(encoder); |
| - of_node_put(connector); |
| - |
| if (ret && ret != -EPROBE_DEFER) |
| dev_warn(rcdu->dev, |
| - "failed to initialize encoder %s (%d), skipping\n", |
| - encoder->full_name, ret); |
| + "failed to initialize encoder %s on output %u (%d), skipping\n", |
| + of_node_full_name(encoder), output, ret); |
| + |
| + of_node_put(encoder); |
| + of_node_put(connector); |
| |
| return ret; |
| } |