OSDN Git Service

s390/qeth: make qeth_qdio_handle_aob() more robust
authorJulian Wiedmann <jwi@linux.ibm.com>
Mon, 7 Dec 2020 13:12:33 +0000 (14:12 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 7 Dec 2020 14:55:21 +0000 (06:55 -0800)
commitd2e46004c5cdaec4befa3c1a071bb9fa7fdbbcc5
tree3019f0d8060ed4c98306ee325767ec6f369bb031
parent75cf3854dcdf7b5c583538cae12ffa054d237d93
s390/qeth: make qeth_qdio_handle_aob() more robust

When qeth_qdio_handle_aob() frees dangling allocations in the notified
TX buffer, there are rare tear-down cases where
qeth_drain_output_queue() would later call qeth_clear_output_buffer()
for the same buffer - and thus end up walking the buffer a second time
to check for dangling kmem_cache allocations.

Luckily current code previously scrubs such a buffer, so
qeth_clear_output_buffer() would find buf->buffer->element[i].addr as
NULL and not do anything. But this is fragile, and we can easily improve
it by consistently clearing the ->is_header flag after freeing the
allocation.

Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/s390/net/qeth_core_main.c