From nobody Tue Feb 10 18:36:33 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (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 086A534B1A1 for ; Mon, 9 Feb 2026 10:19:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770632353; cv=none; b=Z6cIpM6lQIvHtqosEjZ7lgiAL8Ej0TnYtD48qmv5K4TTmKCMqfwYQxDgcKRegWrThriD4EhUzSwjPB+P8fHdjP29R/Dfutg13Em7U78HEOXdegZ+BdmWatr6ElZKAnGjBwUJeTPZCwfxcCrt1LkpAhjo+Gy6CkirVeNfl3KKAu0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770632353; c=relaxed/simple; bh=0w0jXSbiYvV9PkfHd7Y/gTBwbMDBXcyLKCKvbcT9SVw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=t6/kkJOHrBMBuWnOdC7suG7Ds56deVJlTPP9QnJbVSI6ktIzaGjbzPNWD1o8/HaVHKCVpHoW3MH/tCRMx4CsW843ibmMS+p/P3meZLLsDEav7RBMIS3bYM0s09V8nk0OtjuYmFTrX5rhjkDtVnSS4mUi0uOP3dfxXJr1KW6XUFM= 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=OlK57j+M; arc=none smtp.client-ip=209.85.210.172 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="OlK57j+M" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-81f4f4d4822so2264177b3a.3 for ; Mon, 09 Feb 2026 02:19:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770632352; x=1771237152; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=P0yJ30IO6L9zumScY2O/11JIUZV+AhdfVdk5gSKn/lk=; b=OlK57j+MNuIWsyBqO9SAT+FXxENRf/GK5aPq253S97pUkg/oDytwCj3kQ5nHFdIqKg UQrPXL0tmp0ZXQHalrIWFjOyI2CYRzMF6rJr6xKXwZELkx6T+1/04Jx5tR+WykNoti3P AkaYxZINu//UiAytVxCacjs0EcgvI1msnfQC6/Ish4YlgMSDPlKpRys6RDg9P9mCeGDv vEv2wChOCrWVLtugZc0vbY7EhLTQt/LHXCS06tNfUjzjcR+Xb+iqw44Af7CXhwZS6oTi dPoEWtPsiqujq2WvZkl0YsNKyoiAhSM1q7sVqoCCTsThicLfWron6Vu+cT6+gKI3fwW3 MpFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770632352; x=1771237152; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=P0yJ30IO6L9zumScY2O/11JIUZV+AhdfVdk5gSKn/lk=; b=efn8+5c4Ha1XJywXbSkz4jl0wcbQ1090pp2JMRRfoMs/KyGJgfc19Q3GKXxGszb+fx prnjo5dR8Au97mGFRYc3d2ERVb9oPipUX1JxaXRGq1gMT7zWjo/SbxY659gaoEhrlgPf zQDe9BY3smNUULM+YPtrEOppvbkLOezl1TGbQKdqGn0fG0SyrcW+UgtFxTGykKe4HLml VXCGtxqQyGo52dWeLqO7NDKaiOgL1OZAEIMHw5sAX6eWwy8UxCb4/97xISB7FNKFsSKa 5jgs8gPDe5dIzz/PbVSYLgFLH49hFgGWetXCxRiguZbjrcY+RRlnAH8MkDcIEGSRfYw9 4Tpw== X-Forwarded-Encrypted: i=1; AJvYcCW3JteuSmpJJ3YTLt/+d5I7mJS2pLSs6OPpTVYcl0gAanc2ehzOHLfarAgDpWvcUmRZcvfywkvUQGL2I+c=@vger.kernel.org X-Gm-Message-State: AOJu0Ywj50LX6YlNQOBnQD/areJ+Ml2dT64eyakp+GEN4NhlOTTXQrAr Yz6iQK29XaN0mGfJ9SzMlxDaaoAzBmZ+J+zCnigJ64sSiCZXzGiDmu2kRKlLVOc6iSNosg== X-Gm-Gg: AZuq6aLnUHa5TR+gV60h0rMV6noQbRNJwgDmhGQ90SQSaXy7Wu/3KP2M+jj7jQ4+nFw BPm5LoYxBn/xS/bh0eFrifXjKRNNfQ8QOUfZC9LHPnf+7Ps11biu/NRDYosHfwUOzBuCi4V2MRM aVefEXGyzQJIB1wF4ZaLKWvzdtmhrbUmrgEpQclwUHqU/tQ+a7t1h/Jh2HtSXUnk688d1pyLtjf dtaanPLnP0Ic2Wry/UT2HtCBuSG43K4tNXa5G5vWq0uIy6iWbdNZbZtj/tlTcJ180bS26Ty5oYy s91WDXamkfj3dSpBg1Bo2L7BeTAXOyc2iSsQWo5FyqlMP7QWJY/XZYzzOD5CLXqrUDsbZBiCBDz rlw9jkrcodOiaTkYPlOg8Mb82zRYR1ekhlF6gqneA6Q/WZdb/u9+07SBLTenrmnsxaX7FZJxiXl QR7OiiAllQARhMixyDpneSz4IjlBmA7p7jjACuK+ZCh154HmKEa+sOg9FyTvdfRQIhZY2YotQ9m YXceQm9F+ltwURMjPDp/hmpDlcLt4ptBxIrvz5rxlKV0S+W41BUVBHfBco= X-Received: by 2002:a05:6a00:4507:b0:822:d43a:103f with SMTP id d2e1a72fcca58-824417a44f5mr9635358b3a.60.1770632352256; Mon, 09 Feb 2026 02:19:12 -0800 (PST) Received: from ThinkPad-E14-Gen-6.. ([2401:4900:b92b:c483:8daf:fce0:4f79:1dc6]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-824418856d5sm9159740b3a.38.2026.02.09.02.19.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Feb 2026 02:19:11 -0800 (PST) From: Yuvraj Singh Chauhan To: parthiban.veerasooran@microchip.com, christian.gromm@microchip.com, gregkh@linuxfoundation.org Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Yuvraj Singh Chauhan Subject: [PATCH] staging: most: dim2: replace BUG_ON with WARN_ON_ONCE and error handling Date: Mon, 9 Feb 2026 15:48:29 +0530 Message-ID: <20260209101829.2121131-1-ysinghcin@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace BUG_ON() with WARN_ON_ONCE() and proper error handling in the DIM2 driver. BUG_ON() crashes the entire kernel, which is excessive for conditions that can be handled by returning error codes or exiting the function early. Changes made: - try_start_dim_transfer(): Check hdm_ch validity and initialization status, returning -EINVAL on failure. Check mbo->bus_address validity, releasing the spinlock and returning -EFAULT if zero. - service_done_flag(): Check hdm_ch validity and initialization status, returning early if checks fail. - configure_channel(), enqueue(), poison_channel(): Validate ch_idx bounds and return -EINVAL if out of range. WARN_ON_ONCE() is used instead of WARN_ON() to prevent log flooding if the condition triggers repeatedly. Signed-off-by: Yuvraj Singh Chauhan --- drivers/staging/most/dim2/dim2.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/drivers/staging/most/dim2/dim2.c b/drivers/staging/most/dim2/d= im2.c index dad2abe6c0c9..58b09fa581e0 100644 --- a/drivers/staging/most/dim2/dim2.c +++ b/drivers/staging/most/dim2/dim2.c @@ -166,8 +166,10 @@ static int try_start_dim_transfer(struct hdm_channel *= hdm_ch) unsigned long flags; struct dim_ch_state st; =20 - BUG_ON(!hdm_ch); - BUG_ON(!hdm_ch->is_initialized); + if (WARN_ON_ONCE(!hdm_ch)) + return -EINVAL; + if (WARN_ON_ONCE(!hdm_ch->is_initialized)) + return -EINVAL; =20 spin_lock_irqsave(&dim_lock, flags); if (list_empty(head)) { @@ -188,7 +190,10 @@ static int try_start_dim_transfer(struct hdm_channel *= hdm_ch) return -EAGAIN; } =20 - BUG_ON(mbo->bus_address =3D=3D 0); + if (WARN_ON_ONCE(mbo->bus_address =3D=3D 0)) { + spin_unlock_irqrestore(&dim_lock, flags); + return -EFAULT; + } if (!dim_enqueue_buffer(&hdm_ch->ch, mbo->bus_address, buf_size)) { list_del(head->next); spin_unlock_irqrestore(&dim_lock, flags); @@ -269,8 +274,10 @@ static void service_done_flag(struct dim2_hdm *dev, in= t ch_idx) unsigned long flags; u8 *data; =20 - BUG_ON(!hdm_ch); - BUG_ON(!hdm_ch->is_initialized); + if (WARN_ON_ONCE(!hdm_ch)) + return; + if (WARN_ON_ONCE(!hdm_ch->is_initialized)) + return; =20 spin_lock_irqsave(&dim_lock, flags); =20 @@ -455,7 +462,8 @@ static int configure_channel(struct most_interface *mos= t_iface, int ch_idx, int const ch_addr =3D ch_idx * 2 + 2; struct hdm_channel *const hdm_ch =3D dev->hch + ch_idx; =20 - BUG_ON(ch_idx < 0 || ch_idx >=3D DMA_CHANNELS); + if (WARN_ON_ONCE(ch_idx < 0 || ch_idx >=3D DMA_CHANNELS)) + return -EINVAL; =20 if (hdm_ch->is_initialized) return -EPERM; @@ -567,7 +575,8 @@ static int enqueue(struct most_interface *most_iface, i= nt ch_idx, struct hdm_channel *hdm_ch =3D dev->hch + ch_idx; unsigned long flags; =20 - BUG_ON(ch_idx < 0 || ch_idx >=3D DMA_CHANNELS); + if (WARN_ON_ONCE(ch_idx < 0 || ch_idx >=3D DMA_CHANNELS)) + return -EINVAL; =20 if (!hdm_ch->is_initialized) return -EPERM; @@ -643,7 +652,8 @@ static int poison_channel(struct most_interface *most_i= face, int ch_idx) u8 hal_ret; int ret =3D 0; =20 - BUG_ON(ch_idx < 0 || ch_idx >=3D DMA_CHANNELS); + if (WARN_ON_ONCE(ch_idx < 0 || ch_idx >=3D DMA_CHANNELS)) + return -EINVAL; =20 if (!hdm_ch->is_initialized) return -EPERM; base-commit: 05f7e89ab9731565d8a62e3b5d1ec206485eeb0b --=20 2.43.0