From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0F2E53EAC86 for ; Wed, 6 May 2026 13:18:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778073504; cv=none; b=nN7k/UcDmo6LbYoW3mXO5JmxwsRGps4NikG1wo0DCX9RFEYm30TLf+9iIlFK9YVaKpWjfKIcEJpif43S+XjHSkoBIVuUAA238W6V2Iedw3cfoKZFJ22wp1/BTsqRru7TE4ZaKakBoE3/7JOf9xA7MKZeeeLZ1/szZ6L7CUINK4U= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778073504; c=relaxed/simple; bh=H/vQNuz6l3qHBqilPEpwi1q+UJUiZ3mJzk40phtVgAc=; h=Date:From:To:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=BlxmA6MoaXJVzq8JDRre7V29fpnX71qtiQmYlvtf5MSopurC2oNBEa72z4ZMNr1djBBEmVUkn/DNAyN7HYRDlRtq1rJv64ZQeK69Lgp9sGHwklHQe1OOCF1xSBdoBNoIAVKPcG+beLSvPMwuefK3XyftzEE5FDHqwI/1jW6h1vg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FlIo16me; arc=none smtp.client-ip=209.85.221.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FlIo16me" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-4526a8170ceso75267f8f.2 for ; Wed, 06 May 2026 06:18:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778073501; x=1778678301; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Gdn3v4LePnCbJLOvB6JNHelM7dSdIHqCyFsaYNEA7+I=; b=FlIo16meRihtxcZlGyUJVdgRBzUPtoaQsNV9bf6zd1Be7LcEayqX+B6gq5acwgyFeS B+NEp85oz69EvUP3dJMTYCd4DkzOnSi2oJxxTIlJRA/LyWZMxp2wb59ic9nx4KjmmxC8 PrK+mGIXi2KtP1oqWl9+JMlxkJ90vvR5XynK9hisiMi5UJFoZ/Z9c3ShRII4Dj2NzRff PSsj69rGBeqRZlSCJnfASPdtWCYPkT0g/itLgiwmeSENjxW+T8xkDLOUBkSYXWoVRIud uli82D2nlDNPeB5Tz+gPjuQCjg3uwpkob3mJi1+4urz2zAhswGqmigqGPLpQq0dCGwlL Wskg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778073501; x=1778678301; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=Gdn3v4LePnCbJLOvB6JNHelM7dSdIHqCyFsaYNEA7+I=; b=HleK4iTzBI5+8Ni4T04sJAOFXKgNzff5+9QanGBk3wdtS8Kl1ESPcZFReM9LXY4nU2 2KNFNH1ubLWL0J5pbw+4tKxRF8v+mBfmSBuGn4L40fvpjiolg9LVhNyiBevw/+44p0ih XHPApTXkTHPuOIfjFPz3pLqHoi46jwL6f3Ytwz0whSkSD4glxbAiYd000aY8gjR7LIej D6m4sN6nlNIah2VngZ2SF1jrXCtqeIKIf/EzJ5VJhrac4PqNAjvAuniXeRPaEdUHi64l yhvDH9vOD9Q05pdiGfX0bhrhlzk0DsyEwuygOgcQ59YkOkk1H+2vFWYXP6DIUrvHCpjX 3o/A== X-Forwarded-Encrypted: i=1; AFNElJ8bEB25NwhWwsmnLRuJXTu3KX1mqCIzFbPtzQB4ePTuF0rh+nsJY0D2GAobz1vXCA8RfflO0DdLe41FR4c=@vger.kernel.org X-Gm-Message-State: AOJu0YxLTvEqREdJLAu5ps8Wbup8g0HYmU2cRBaiFqrQkIEbPJDh1kI2 xQYTr/CrUuizVa2Tsxs7x/vOkkESyboU2Vx41ujjylTHixyH+lpJE163 X-Gm-Gg: AeBDieuuJ4tYKldl/iFq8oMIgtqensVcq1Jo2p9QvYHemblVvYrELtwZ6De+TIbZGjv oeWb2gvXQMXl6vz25/eBTUkay8W8k7njtDVucUUHyQuDwZo7jP5gepadmYvFIneL2ByFDTLUf/Y MWaM1xgXIbRA/tts+q7nhDmXAip4LG2bj26XNfgTXV9B5CZy2BVgJffeI0+HNEXbrIaohmGOzGh VqTF5SiiPJqLkFf8MQ9NeUEp3x9UQhCP7Chan5QfTFlkTMtidhpfmGkQ/090pXB5spQRM3d1kYJ IaLjEMRSLb74l9Tdg7oHrKajuqp1bWVqhdjrNdTjH5/3ggA9A6m7ExcU0EKrcRnRg8zif9Zme+H 7l60yCnuvI/vlqBxfS9q4YK5vVyZ4J1gfklvW4mVS240oPeM7Vosm7eqjsAo0vpHfqjkVU01cqB WRBGjGJI7v5i8RCmwtblIvKJ+NBTh9ugL8qsn/YcIVVwFsL3+3ty+2Uxq608AxhnRyo/6Y X-Received: by 2002:a05:6000:ccd:b0:451:fd07:ff24 with SMTP id ffacd0b85a97d-451fd07ff9bmr2374020f8f.2.1778073501232; Wed, 06 May 2026 06:18:21 -0700 (PDT) Received: from osama ([2a02:908:1b6:8980:89b3:e462:e9ca:df27]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45055960fd6sm13258526f8f.31.2026.05.06.06.18.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 May 2026 06:18:20 -0700 (PDT) Date: Wed, 6 May 2026 15:18:18 +0200 From: Osama Abdelkader To: Anitha Chrisanthus , Edmund Dea , David Airlie , Simona Vetter , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] drm/kmb: reset DSI host singleton state on teardown Message-ID: References: <20260420150658.165734-1-osama.abdelkader@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260420150658.165734-1-osama.abdelkader@gmail.com> On Mon, Apr 20, 2026 at 05:06:57PM +0200, Osama Abdelkader wrote: > Tear down and clear the global DSI host/device/bridge singleton state > when unregistering the host so probe retries and remove/reprobe cycles > start from a clean state. > > Guard the clock-disable path in kmb_dsi_host_unregister() to avoid > dereferencing error pointers from early probe failure paths. > Signed-off-by: Osama Abdelkader > --- > drivers/gpu/drm/kmb/kmb_dsi.c | 44 ++++++++++++++++++++++++++++++----- > 1 file changed, 38 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/kmb/kmb_dsi.c b/drivers/gpu/drm/kmb/kmb_dsi.c > index aeb2f9f98f23..500dc00ba6ae 100644 > --- a/drivers/gpu/drm/kmb/kmb_dsi.c > +++ b/drivers/gpu/drm/kmb/kmb_dsi.c > @@ -5,6 +5,7 @@ > > #include > #include > +#include > #include > #include > #include > @@ -182,8 +183,18 @@ static void kmb_dsi_clk_disable(struct kmb_dsi *kmb_dsi) > > void kmb_dsi_host_unregister(struct kmb_dsi *kmb_dsi) > { > - kmb_dsi_clk_disable(kmb_dsi); > - mipi_dsi_host_unregister(kmb_dsi->host); > + if (!IS_ERR_OR_NULL(kmb_dsi)) > + kmb_dsi_clk_disable(kmb_dsi); > + > + if (dsi_host) { > + mipi_dsi_host_unregister(dsi_host); > + kfree(dsi_host); > + dsi_host = NULL; > + } > + > + kfree(dsi_device); > + dsi_device = NULL; > + adv_bridge = NULL; > } > > /* > @@ -217,6 +228,8 @@ static const struct mipi_dsi_host_ops kmb_dsi_host_ops = { > int kmb_dsi_host_bridge_init(struct device *dev) > { > struct device_node *encoder_node, *dsi_out; > + bool host_registered = false; > + int ret; > > /* Create and register MIPI DSI host */ > if (!dsi_host) { > @@ -230,25 +243,38 @@ int kmb_dsi_host_bridge_init(struct device *dev) > dsi_device = kzalloc_obj(*dsi_device); > if (!dsi_device) { > kfree(dsi_host); > + dsi_host = NULL; > return -ENOMEM; > } > } > > dsi_host->dev = dev; > - mipi_dsi_host_register(dsi_host); > + ret = mipi_dsi_host_register(dsi_host); > + if (ret) { > + DRM_ERROR("failed to register dsi host\n"); > + kfree(dsi_device); > + dsi_device = NULL; > + kfree(dsi_host); > + dsi_host = NULL; > + return ret; > + } > + > + host_registered = true; > } > > /* Find ADV7535 node and initialize it */ > dsi_out = of_graph_get_endpoint_by_regs(dev->of_node, 0, 1); > if (!dsi_out) { > DRM_ERROR("Failed to get dsi_out node info from DT\n"); > - return -EINVAL; > + ret = -EINVAL; > + goto err_unregister_host; > } > encoder_node = of_graph_get_remote_port_parent(dsi_out); > if (!encoder_node) { > of_node_put(dsi_out); > DRM_ERROR("Failed to get bridge info from DT\n"); > - return -EINVAL; > + ret = -EINVAL; > + goto err_unregister_host; > } > /* Locate drm bridge from the hdmi encoder DT node */ > adv_bridge = of_drm_find_bridge(encoder_node); > @@ -256,10 +282,16 @@ int kmb_dsi_host_bridge_init(struct device *dev) > of_node_put(encoder_node); > if (!adv_bridge) { > DRM_DEBUG("Wait for external bridge driver DT\n"); > - return -EPROBE_DEFER; > + ret = -EPROBE_DEFER; > + goto err_unregister_host; > } > > return 0; > + > +err_unregister_host: > + if (host_registered) > + kmb_dsi_host_unregister(NULL); > + return ret; > } > > static u32 mipi_get_datatype_params(u32 data_type, u32 data_mode, > -- > 2.43.0 > ping.