summaryrefslogtreecommitdiffstats
path: root/ncr-data.c
diff options
context:
space:
mode:
Diffstat (limited to 'ncr-data.c')
-rw-r--r--ncr-data.c33
1 files changed, 6 insertions, 27 deletions
diff --git a/ncr-data.c b/ncr-data.c
index 8763234..21aabe4 100644
--- a/ncr-data.c
+++ b/ncr-data.c
@@ -282,37 +282,16 @@ int ncr_data_set(struct list_sem_st* lst, void __user* arg)
goto cleanup;
}
- if (!get.append_flag) {
- if (get.data != NULL) {
- if (unlikely(copy_from_user(data->data, get.data,
- get.data_size))) {
- err();
- ret = -EFAULT;
- goto cleanup;
- }
- }
- data->data_size = get.data_size;
- } else {
- size_t offset;
-
- offset = data->data_size;
- /* get.data_size <= data->max_data_size, which is limited in
- data_alloc(), so there is no integer overflow. */
- if (get.data_size+offset > data->max_data_size) {
+ if (get.data != NULL) {
+ if (unlikely(copy_from_user(data->data, get.data,
+ get.data_size))) {
err();
- ret = -EINVAL;
+ ret = -EFAULT;
goto cleanup;
}
- if (get.data != NULL) {
- if (unlikely(copy_from_user(&data->data[offset],
- get.data, get.data_size))) {
- err();
- ret = -EFAULT;
- goto cleanup;
- }
- }
- data->data_size = offset + get.data_size;
}
+ data->data_size = get.data_size;
+
ret = 0;
cleanup: