hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/drivers/infiniband/sw/rxe/rxe_mmap.c
....@@ -1,41 +1,14 @@
1
+// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
12 /*
23 * Copyright (c) 2016 Mellanox Technologies Ltd. All rights reserved.
34 * Copyright (c) 2015 System Fabric Works, Inc. All rights reserved.
4
- *
5
- * This software is available to you under a choice of one of two
6
- * licenses. You may choose to be licensed under the terms of the GNU
7
- * General Public License (GPL) Version 2, available from the file
8
- * COPYING in the main directory of this source tree, or the
9
- * OpenIB.org BSD license below:
10
- *
11
- * Redistribution and use in source and binary forms, with or
12
- * without modification, are permitted provided that the following
13
- * conditions are met:
14
- *
15
- * - Redistributions of source code must retain the above
16
- * copyright notice, this list of conditions and the following
17
- * disclaimer.
18
- *
19
- * - Redistributions in binary form must reproduce the above
20
- * copyright notice, this list of conditions and the following
21
- * disclaimer in the documentation and/or other materials
22
- * provided with the distribution.
23
- *
24
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
28
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
29
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
30
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31
- * SOFTWARE.
325 */
336
347 #include <linux/module.h>
358 #include <linux/vmalloc.h>
369 #include <linux/mm.h>
3710 #include <linux/errno.h>
38
-#include <asm/pgtable.h>
11
+#include <rdma/uverbs_ioctl.h>
3912
4013 #include "rxe.h"
4114 #include "rxe_loc.h"
....@@ -140,16 +113,17 @@
140113 /*
141114 * Allocate information for rxe_mmap
142115 */
143
-struct rxe_mmap_info *rxe_create_mmap_info(struct rxe_dev *rxe,
144
- u32 size,
145
- struct ib_ucontext *context,
146
- void *obj)
116
+struct rxe_mmap_info *rxe_create_mmap_info(struct rxe_dev *rxe, u32 size,
117
+ struct ib_udata *udata, void *obj)
147118 {
148119 struct rxe_mmap_info *ip;
149120
121
+ if (!udata)
122
+ return ERR_PTR(-EINVAL);
123
+
150124 ip = kmalloc(sizeof(*ip), GFP_KERNEL);
151125 if (!ip)
152
- return NULL;
126
+ return ERR_PTR(-ENOMEM);
153127
154128 size = PAGE_ALIGN(size);
155129
....@@ -165,7 +139,9 @@
165139
166140 INIT_LIST_HEAD(&ip->pending_mmaps);
167141 ip->info.size = size;
168
- ip->context = context;
142
+ ip->context =
143
+ container_of(udata, struct uverbs_attr_bundle, driver_udata)
144
+ ->context;
169145 ip->obj = obj;
170146 kref_init(&ip->ref);
171147