Hi Aradhya, Thanks for the comments. On Aug 28, 2023 at 16:34:30 +0530, Aradhya Bhatia wrote: > Hi Jai, > > Thanks for debugging the issue. > > On 25-Aug-23 16:32, Jai Luthra wrote: > > Fix the NULL pointer dereference when no monitor is connected, and the > > sound card is opened from userspace. > > > > Instead return an error as EDID information cannot be provided to > > the sound framework if there is no connector attached. > > > > Fixes: e0fd83dbe924 ("drm: bridge: it66121: Add audio support") > > Reported-by: Nishanth Menon <nm@xxxxxx> > > Closes: https://lore.kernel.org/all/20230825105849.crhon42qndxqif4i@gondola/ > > Signed-off-by: Jai Luthra <j-luthra@xxxxxx> > > --- > > drivers/gpu/drm/bridge/ite-it66121.c | 5 +++++ > > 1 file changed, 5 insertions(+) > > > > diff --git a/drivers/gpu/drm/bridge/ite-it66121.c b/drivers/gpu/drm/bridge/ite-it66121.c > > index 466641c77fe9..d6fa00dea464 100644 > > --- a/drivers/gpu/drm/bridge/ite-it66121.c > > +++ b/drivers/gpu/drm/bridge/ite-it66121.c > > @@ -1446,6 +1446,11 @@ static int it66121_audio_get_eld(struct device *dev, void *data, > > { > > struct it66121_ctx *ctx = dev_get_drvdata(dev); > > > > + if (!ctx->connector) { > > + dev_dbg(dev, "No connector present, cannot provide EDID data"); > > + return -EINVAL; > > + } > > + > > There are not many HDMI bridges that support codecs in the kernel, but > upon a quick look, bridge/analogix/anx7625.c and > bridge/synopsys/dw-hdmi* gracefully return a buffer of 0s when the > connector is unavailable. Interesting, that sounds cleaner to me. > > I am not sure why that is done, but I also don't see the hdmi-codec > driver handle the 0s situation properly. It is business as usual for the > hdmi-codec. Chasing this down through the hdmi-codec driver and sound framework, it will use sane defaults for supported channels and sample rates if the actual EDID struct we are passing is all 0s. I tested it out on the beagle play board and did not see any crashes. > > Did you come across some observation when you were testing? Yes, with the current state of the patch, if I plug-in a monitor after the soundcard is probed I cannot playback audio, because we returned an error initially. This issue goes away if we return a buffer of 0s like those other bridges. Overall I'm happy with this idea, so I will send a v2 fixing this. > > Regards > Aradhya > > > mutex_lock(&ctx->lock); > > > > memcpy(buf, ctx->connector->eld, > > > > --- > > base-commit: 6269320850097903b30be8f07a5c61d9f7592393 > > change-id: 20230825-it66121_edid-6ee98517808b > > > > Best regards, > -- Thanks, Jai GPG Fingerprint: 4DE0 D818 E5D5 75E8 D45A AFC5 43DE 91F9 249A 7145
Attachment:
signature.asc
Description: PGP signature