diff --git a/lib/os/spsc_pbuf.c b/lib/os/spsc_pbuf.c index 967869fb2e8..afe8c206bf9 100644 --- a/lib/os/spsc_pbuf.c +++ b/lib/os/spsc_pbuf.c @@ -169,7 +169,7 @@ int spsc_pbuf_alloc(struct spsc_pbuf *pb, uint16_t len, char **buf) /* Packet will fit at the end */ free_space = remaining - ((rd_idx > 0) ? 0 : sizeof(uint32_t)); } else { - if (rd_idx > remaining) { + if (rd_idx > space) { /* Padding must be added. */ data_loc[wr_idx] = PADDING_MARK; __sync_synchronize(); diff --git a/tests/lib/spsc_pbuf/src/main.c b/tests/lib/spsc_pbuf/src/main.c index ba7a413a8a9..1e39ba94954 100644 --- a/tests/lib/spsc_pbuf/src/main.c +++ b/tests/lib/spsc_pbuf/src/main.c @@ -305,7 +305,7 @@ ZTEST(test_spsc_pbuf, test_0cpy_corner2) pb = spsc_pbuf_init(buffer, sizeof(buffer), 0); capacity = spsc_pbuf_capacity(pb); - /* Commit 5 byte packet. */ + /* Commit 16 byte packet. */ len1 = 16; PACKET_WRITE(pb, len1, len1, 0, len1); @@ -349,10 +349,10 @@ ZTEST(test_spsc_pbuf, test_largest_alloc) PACKET_WRITE(pb, len1, len1, 0, len1); PACKET_CONSUME(pb, len1, 0); - len2 = capacity - ROUND_UP(len1, sizeof(uint32_t)) - 2 * sizeof(uint32_t) - 10; + len2 = capacity - TLEN(len1) - TLEN(10); PACKET_WRITE(pb, len2, len2, 1, len2); - PACKET_WRITE(pb, SPSC_PBUF_MAX_LEN, 0, 1, 8); + PACKET_WRITE(pb, SPSC_PBUF_MAX_LEN, 0, 1, 12); PACKET_WRITE(pb, SPSC_PBUF_MAX_LEN - 1, 0, 1, 12); @@ -363,7 +363,7 @@ ZTEST(test_spsc_pbuf, test_largest_alloc) PACKET_WRITE(pb, len1, len1, 0, len1); PACKET_CONSUME(pb, len1, 0); - len2 = capacity - ROUND_UP(len1, sizeof(uint32_t)) - 2 * sizeof(uint16_t) - 8; + len2 = capacity - TLEN(len1) - TLEN(12); PACKET_WRITE(pb, len2, len2, 1, len2); PACKET_WRITE(pb, SPSC_PBUF_MAX_LEN - 1, 0, 1, 12);