)]}'
{
  "commit": "225bf8ea060d2f0744a9d04e6292fcc4608ff345",
  "tree": "d687053b37312ae8fa7bfd84e4764b1ba67dd7d7",
  "parents": [
    "f4195d1eac954a67adf112dd53404560cc55b942"
  ],
  "author": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Tue Nov 24 12:10:01 2015 +0000"
  },
  "committer": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Tue Nov 24 12:10:01 2015 +0000"
  },
  "message": "rxrpc: Correctly handle ack at end of client call transmit phase\n\nNormally, the transmit phase of a client call is implicitly ack\u0027d by the\nreception of the first data packet of the response being received.\nHowever, if a security negotiation happens, the transmit phase, if it is\nentirely contained in a single packet, may get an ack packet in response\nand then may get aborted due to security negotiation failure.\n\nBecause the client has shifted state to RXRPC_CALL_CLIENT_AWAIT_REPLY due\nto having transmitted all the data, the code that handles processing of the\nreceived ack packet doesn\u0027t note the hard ack the data packet.\n\nThe following abort packet in the case of security negotiation failure then\nincurs an assertion failure when it tries to drain the Tx queue because the\nhard ack state is out of sync (hard ack means the packets have been\nprocessed and can be discarded by the sender; a soft ack means that the\npackets are received but could still be discarded and rerequested by the\nreceiver).\n\nTo fix this, we should record the hard ack we received for the ack packet.\n\nThe assertion failure looks like:\n\n\tRxRPC: Assertion failed\n\t1 \u003c\u003d 0 is false\n\t0x1 \u003c\u003d 0x0 is false\n\t------------[ cut here ]------------\n\tkernel BUG at ../net/rxrpc/ar-ack.c:431!\n\t...\n\tRIP: 0010:[\u003cffffffffa006857b\u003e]  [\u003cffffffffa006857b\u003e] rxrpc_rotate_tx_window+0xbc/0x131 [af_rxrpc]\n\t...\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e0547f521f20d79c688c773286d609066c990a1d",
      "old_mode": 33188,
      "old_path": "net/rxrpc/ar-ack.c",
      "new_id": "adc555e0323d70b90d786c630f5a04dfddd60b32",
      "new_mode": 33188,
      "new_path": "net/rxrpc/ar-ack.c"
    }
  ]
}
