rxrpc: The offset field in struct rxrpc_skb_priv is unnecessary
authorDavid Howells <dhowells@redhat.com>
Fri, 30 Sep 2016 12:26:03 +0000 (13:26 +0100)
committerDavid Howells <dhowells@redhat.com>
Fri, 30 Sep 2016 13:39:28 +0000 (14:39 +0100)
The offset field in struct rxrpc_skb_priv is unnecessary as the value can
always be calculated.

Signed-off-by: David Howells <dhowells@redhat.com>
net/rxrpc/ar-internal.h
net/rxrpc/conn_event.c
net/rxrpc/input.c
net/rxrpc/local_event.c
net/rxrpc/recvmsg.c
net/rxrpc/rxkad.c

index 539db54..fd64a2b 100644 (file)
@@ -144,7 +144,6 @@ struct rxrpc_skb_priv {
                u8              nr_jumbo;       /* Number of jumbo subpackets */
        };
        union {
-               unsigned int    offset;         /* offset into buffer of next read */
                int             remain;         /* amount of space remaining for next write */
                u32             error;          /* network error code */
        };
index 37609ce..3f9d8d7 100644 (file)
@@ -276,7 +276,8 @@ static int rxrpc_process_event(struct rxrpc_connection *conn,
                return 0;
 
        case RXRPC_PACKET_TYPE_ABORT:
-               if (skb_copy_bits(skb, sp->offset, &wtmp, sizeof(wtmp)) < 0)
+               if (skb_copy_bits(skb, sizeof(struct rxrpc_wire_header),
+                                 &wtmp, sizeof(wtmp)) < 0)
                        return -EPROTO;
                abort_code = ntohl(wtmp);
                _proto("Rx ABORT %%%u { ac=%d }", sp->hdr.serial, abort_code);
index 7993473..5ba35b4 100644 (file)
@@ -358,7 +358,7 @@ static bool rxrpc_receiving_reply(struct rxrpc_call *call)
 static bool rxrpc_validate_jumbo(struct sk_buff *skb)
 {
        struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
-       unsigned int offset = sp->offset;
+       unsigned int offset = sizeof(struct rxrpc_wire_header);
        unsigned int len = skb->len;
        int nr_jumbo = 1;
        u8 flags = sp->hdr.flags;
@@ -419,7 +419,7 @@ static void rxrpc_input_data(struct rxrpc_call *call, struct sk_buff *skb,
                             u16 skew)
 {
        struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
-       unsigned int offset = sp->offset;
+       unsigned int offset = sizeof(struct rxrpc_wire_header);
        unsigned int ix;
        rxrpc_serial_t serial = sp->hdr.serial, ack_serial = 0;
        rxrpc_seq_t seq = sp->hdr.seq, hard_ack;
@@ -746,15 +746,16 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb,
        } buf;
        rxrpc_serial_t acked_serial;
        rxrpc_seq_t first_soft_ack, hard_ack;
-       int nr_acks, offset;
+       int nr_acks, offset, ioffset;
 
        _enter("");
 
-       if (skb_copy_bits(skb, sp->offset, &buf.ack, sizeof(buf.ack)) < 0) {
+       offset = sizeof(struct rxrpc_wire_header);
+       if (skb_copy_bits(skb, offset, &buf.ack, sizeof(buf.ack)) < 0) {
                _debug("extraction failure");
                return rxrpc_proto_abort("XAK", call, 0);
        }
-       sp->offset += sizeof(buf.ack);
+       offset += sizeof(buf.ack);
 
        acked_serial = ntohl(buf.ack.serial);
        first_soft_ack = ntohl(buf.ack.firstPacket);
@@ -792,9 +793,9 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb,
                                  rxrpc_propose_ack_respond_to_ack);
        }
 
-       offset = sp->offset + nr_acks + 3;
-       if (skb->len >= offset + sizeof(buf.info)) {
-               if (skb_copy_bits(skb, offset, &buf.info, sizeof(buf.info)) < 0)
+       ioffset = offset + nr_acks + 3;
+       if (skb->len >= ioffset + sizeof(buf.info)) {
+               if (skb_copy_bits(skb, ioffset, &buf.info, sizeof(buf.info)) < 0)
                        return rxrpc_proto_abort("XAI", call, 0);
                rxrpc_input_ackinfo(call, skb, &buf.info);
        }
@@ -832,7 +833,7 @@ static void rxrpc_input_ack(struct rxrpc_call *call, struct sk_buff *skb,
                rxrpc_rotate_tx_window(call, hard_ack, &summary);
 
        if (nr_acks > 0) {
-               if (skb_copy_bits(skb, sp->offset, buf.acks, nr_acks) < 0)
+               if (skb_copy_bits(skb, offset, buf.acks, nr_acks) < 0)
                        return rxrpc_proto_abort("XSA", call, 0);
                rxrpc_input_soft_acks(call, buf.acks, first_soft_ack, nr_acks,
                                      &summary);
@@ -880,7 +881,8 @@ static void rxrpc_input_abort(struct rxrpc_call *call, struct sk_buff *skb)
        _enter("");
 
        if (skb->len >= 4 &&
-           skb_copy_bits(skb, sp->offset, &wtmp, sizeof(wtmp)) >= 0)
+           skb_copy_bits(skb, sizeof(struct rxrpc_wire_header),
+                         &wtmp, sizeof(wtmp)) >= 0)
                abort_code = ntohl(wtmp);
 
        _proto("Rx ABORT %%%u { %x }", sp->hdr.serial, abort_code);
@@ -996,7 +998,6 @@ int rxrpc_extract_header(struct rxrpc_skb_priv *sp, struct sk_buff *skb)
        sp->hdr.securityIndex   = whdr.securityIndex;
        sp->hdr._rsvd           = ntohs(whdr._rsvd);
        sp->hdr.serviceId       = ntohs(whdr.serviceId);
-       sp->offset = sizeof(whdr);
        return 0;
 }
 
index 190f68b..540d395 100644 (file)
@@ -95,7 +95,8 @@ void rxrpc_process_local_events(struct rxrpc_local *local)
 
                switch (sp->hdr.type) {
                case RXRPC_PACKET_TYPE_VERSION:
-                       if (skb_copy_bits(skb, sp->offset, &v, 1) < 0)
+                       if (skb_copy_bits(skb, sizeof(struct rxrpc_wire_header),
+                                         &v, 1) < 0)
                                return;
                        _proto("Rx VERSION { %02x }", v);
                        if (v == 0)
index 038ae62..f05ea0a 100644 (file)
@@ -261,15 +261,13 @@ static int rxrpc_locate_data(struct rxrpc_call *call, struct sk_buff *skb,
                             u8 *_annotation,
                             unsigned int *_offset, unsigned int *_len)
 {
-       struct rxrpc_skb_priv *sp = rxrpc_skb(skb);
-       unsigned int offset = *_offset;
+       unsigned int offset = sizeof(struct rxrpc_wire_header);
        unsigned int len = *_len;
        int ret;
        u8 annotation = *_annotation;
 
        /* Locate the subpacket */
-       offset = sp->offset;
-       len = skb->len - sp->offset;
+       len = skb->len - offset;
        if ((annotation & RXRPC_RX_ANNO_JUMBO) > 0) {
                offset += (((annotation & RXRPC_RX_ANNO_JUMBO) - 1) *
                           RXRPC_JUMBO_SUBPKTLEN);
index 88d080a..627abed 100644 (file)
@@ -771,7 +771,8 @@ static int rxkad_respond_to_challenge(struct rxrpc_connection *conn,
        }
 
        abort_code = RXKADPACKETSHORT;
-       if (skb_copy_bits(skb, sp->offset, &challenge, sizeof(challenge)) < 0)
+       if (skb_copy_bits(skb, sizeof(struct rxrpc_wire_header),
+                         &challenge, sizeof(challenge)) < 0)
                goto protocol_error;
 
        version = ntohl(challenge.version);
@@ -1028,7 +1029,8 @@ static int rxkad_verify_response(struct rxrpc_connection *conn,
        _enter("{%d,%x}", conn->debug_id, key_serial(conn->server_key));
 
        abort_code = RXKADPACKETSHORT;
-       if (skb_copy_bits(skb, sp->offset, &response, sizeof(response)) < 0)
+       if (skb_copy_bits(skb, sizeof(struct rxrpc_wire_header),
+                         &response, sizeof(response)) < 0)
                goto protocol_error;
        if (!pskb_pull(skb, sizeof(response)))
                BUG();
@@ -1057,7 +1059,8 @@ static int rxkad_verify_response(struct rxrpc_connection *conn,
                return -ENOMEM;
 
        abort_code = RXKADPACKETSHORT;
-       if (skb_copy_bits(skb, sp->offset, ticket, ticket_len) < 0)
+       if (skb_copy_bits(skb, sizeof(struct rxrpc_wire_header),
+                         ticket, ticket_len) < 0)
                goto protocol_error_free;
 
        ret = rxkad_decrypt_ticket(conn, ticket, ticket_len, &session_key,