[PATCH v7 3/3] media: dvb-core: extirpate defective and unsafe ULE debug block

From: Breno Rodrigues Alves

Date: Sat Sep 05 2026 - 08:47:21 EST


Completely purge the unmaintained DVB_ULE_DEBUG code block from
dvb_net.c to eliminate severe lockless race conditions and buffer overflow
vulnerabilities on global network state variables.

Assisted-by: OpenCode AI
Signed-off-by: Breno Rodrigues Alves <breno3011alves@xxxxxxxxx>
---
drivers/leds/Kconfig | 1 -
drivers/media/dvb-core/dvb_net.c | 40 --------------------------------
2 files changed, 41 deletions(-)

diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index d0d318223..800fbd560 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -873,7 +873,6 @@ config LEDS_UPBOARD
This driver can also be built as a module. If so the module will be
called leds-upboard.

-comment "LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)"

config LEDS_BLINKM
tristate "LED support for the BlinkM I2C RGB LED"
diff --git a/drivers/media/dvb-core/dvb_net.c b/drivers/media/dvb-core/dvb_net.c
index a2159b2bc..ae0073b94 100644
--- a/drivers/media/dvb-core/dvb_net.c
+++ b/drivers/media/dvb-core/dvb_net.c
@@ -68,19 +68,6 @@ static inline __u32 iov_crc32( __u32 c, struct kvec *iov, unsigned int cnt )

#define DVB_NET_MULTICAST_MAX 10

-#ifdef DVB_ULE_DEBUG
-/*
- * The code inside DVB_ULE_DEBUG keeps a history of the
- * last 100 TS cells processed.
- */
-static unsigned char ule_hist[100*TS_SZ] = { 0 };
-static unsigned char *ule_where = ule_hist, ule_dump;
-
-static void hexdump(const unsigned char *buf, unsigned short len)
-{
- print_hex_dump_debug("", DUMP_PREFIX_OFFSET, 16, 1, buf, len, true);
-}
-#endif

struct dvb_net_priv {
int in_use;
@@ -320,16 +307,6 @@ static int dvb_net_ule_new_ts_cell(struct dvb_net_ule_handle *h)
{
/* We are about to process a new TS cell. */

-#ifdef DVB_ULE_DEBUG
- if (ule_where >= &ule_hist[100*TS_SZ])
- ule_where = ule_hist;
- memcpy(ule_where, h->ts, TS_SZ);
- if (ule_dump) {
- hexdump(ule_where, TS_SZ);
- ule_dump = 0;
- }
- ule_where += TS_SZ;
-#endif

/*
* Check TS h->error conditions: sync_byte, transport_error_indicator,
@@ -659,23 +636,6 @@ static void dvb_net_ule_check_crc(struct dvb_net_ule_handle *h,
h->ts_remain > 2 ?
*(unsigned short *)h->from_where : 0);

- #ifdef DVB_ULE_DEBUG
- hexdump(iov[0].iov_base, iov[0].iov_len);
- hexdump(iov[1].iov_base, iov[1].iov_len);
- hexdump(iov[2].iov_base, iov[2].iov_len);
-
- if (ule_where == ule_hist) {
- hexdump(&ule_hist[98*TS_SZ], TS_SZ);
- hexdump(&ule_hist[99*TS_SZ], TS_SZ);
- } else if (ule_where == &ule_hist[TS_SZ]) {
- hexdump(&ule_hist[99*TS_SZ], TS_SZ);
- hexdump(ule_hist, TS_SZ);
- } else {
- hexdump(ule_where - TS_SZ - TS_SZ, TS_SZ);
- hexdump(ule_where - TS_SZ, TS_SZ);
- }
- ule_dump = 1;
- #endif

h->dev->stats.rx_errors++;
h->dev->stats.rx_crc_errors++;
--
2.43.0