input.c (987db9f7cd1e77e611b770a569068c43949aa6fd) input.c (d0d5c0cd1e711c98703f3544c1e6fc1372898de5)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/* RxRPC packet reception
3 *
4 * Copyright (C) 2007, 2016 Red Hat, Inc. All Rights Reserved.
5 * Written by David Howells (dhowells@redhat.com)
6 */
7
8#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

--- 1235 unchanged lines hidden (view full) ---

1244 break;
1245
1246 case RXRPC_PACKET_TYPE_DATA:
1247 if (sp->hdr.callNumber == 0 ||
1248 sp->hdr.seq == 0)
1249 goto bad_message;
1250 if (!rxrpc_validate_data(skb))
1251 goto bad_message;
1// SPDX-License-Identifier: GPL-2.0-or-later
2/* RxRPC packet reception
3 *
4 * Copyright (C) 2007, 2016 Red Hat, Inc. All Rights Reserved.
5 * Written by David Howells (dhowells@redhat.com)
6 */
7
8#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

--- 1235 unchanged lines hidden (view full) ---

1244 break;
1245
1246 case RXRPC_PACKET_TYPE_DATA:
1247 if (sp->hdr.callNumber == 0 ||
1248 sp->hdr.seq == 0)
1249 goto bad_message;
1250 if (!rxrpc_validate_data(skb))
1251 goto bad_message;
1252
1253 /* Unshare the packet so that it can be modified for in-place
1254 * decryption.
1255 */
1256 if (sp->hdr.securityIndex != 0) {
1257 struct sk_buff *nskb = skb_unshare(skb, GFP_ATOMIC);
1258 if (!nskb) {
1259 rxrpc_eaten_skb(skb, rxrpc_skb_unshared_nomem);
1260 goto out;
1261 }
1262
1263 if (nskb != skb) {
1264 rxrpc_eaten_skb(skb, rxrpc_skb_received);
1265 rxrpc_new_skb(skb, rxrpc_skb_unshared);
1266 skb = nskb;
1267 sp = rxrpc_skb(skb);
1268 }
1269 }
1252 break;
1253
1254 case RXRPC_PACKET_TYPE_CHALLENGE:
1255 if (rxrpc_to_server(sp))
1256 goto discard;
1257 break;
1258 case RXRPC_PACKET_TYPE_RESPONSE:
1259 if (rxrpc_to_client(sp))

--- 167 unchanged lines hidden ---
1270 break;
1271
1272 case RXRPC_PACKET_TYPE_CHALLENGE:
1273 if (rxrpc_to_server(sp))
1274 goto discard;
1275 break;
1276 case RXRPC_PACKET_TYPE_RESPONSE:
1277 if (rxrpc_to_client(sp))

--- 167 unchanged lines hidden ---