(Closes: #513680)
- STABLE14-rx-idledead-only-ignore-keepalives-20081222: rx bug fix to
not ignore other ping packets.
+ - STABLE14-rx-rdwr-writeproc-race-20081228: fix rx race condition that
+ could result in reuse of freed memory.
* Make dynroot the default for new installations. It works much better
with systems that don't bring up their network until late in the boot
process, such as wireless laptops. (LP: #249240, #318605)
#endif
RCSID
- ("$Header: /cvs/openafs/src/rx/rx_rdwr.c,v 1.21.2.11 2008/10/02 11:55:03 jaltman Exp $");
+ ("$Header: /cvs/openafs/src/rx/rx_rdwr.c,v 1.21.2.12 2008/12/28 21:08:13 jaltman Exp $");
#ifdef KERNEL
#ifndef UKERNEL
do {
if (call->nFree == 0) {
if (!call->error && cp) {
+ /* Clear the current packet now so that if
+ * we are forced to wait and drop the lock
+ * the packet we are planning on using
+ * cannot be freed.
+ */
+ call->currentPacket = (struct rx_packet *)0;
#ifdef AFS_GLOBAL_RXLOCK_KERNEL
/* Wait until TQ_BUSY is reset before adding any
* packets to the transmit queue
hadd32(call->bytesSent, cp->length);
rxi_PrepareSendPacket(call, cp, 0);
queue_Append(&call->tq, cp);
- cp = call->currentPacket = NULL;
+ cp = NULL;
if (!
(call->
flags & (RX_CALL_FAST_RECOVER |