attrib.c (fa3cacf544636b2dc48cfb2f277a2071f14d66a2) attrib.c (195c52bdd5d5ecfdabf5a7c6159efe299e534f84)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 *
4 * Copyright (C) 2019-2021 Paragon Software GmbH, All rights reserved.
5 *
6 * TODO: merge attr_set_size/attr_data_get_block/attr_allocate_frame?
7 */
8

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

271 align = sbi->cluster_size;
272 if (is_attr_compressed(attr))
273 align <<= COMPRESSION_UNIT;
274 len = (rsize + align - 1) >> sbi->cluster_bits;
275
276 run_init(run);
277
278 /* make a copy of original attribute */
1// SPDX-License-Identifier: GPL-2.0
2/*
3 *
4 * Copyright (C) 2019-2021 Paragon Software GmbH, All rights reserved.
5 *
6 * TODO: merge attr_set_size/attr_data_get_block/attr_allocate_frame?
7 */
8

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

271 align = sbi->cluster_size;
272 if (is_attr_compressed(attr))
273 align <<= COMPRESSION_UNIT;
274 len = (rsize + align - 1) >> sbi->cluster_bits;
275
276 run_init(run);
277
278 /* make a copy of original attribute */
279 attr_s = ntfs_memdup(attr, asize);
279 attr_s = kmemdup(attr, asize, GFP_NOFS);
280 if (!attr_s) {
281 err = -ENOMEM;
282 goto out;
283 }
284
285 if (!len) {
286 /* empty resident -> empty nonresident */
287 alen = 0;

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

328 al_remove_le(ni, le);
329
330 err = ni_insert_nonresident(ni, attr_s->type, attr_name(attr_s),
331 attr_s->name_len, run, 0, alen,
332 attr_s->flags, &attr, NULL);
333 if (err)
334 goto out3;
335
280 if (!attr_s) {
281 err = -ENOMEM;
282 goto out;
283 }
284
285 if (!len) {
286 /* empty resident -> empty nonresident */
287 alen = 0;

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

328 al_remove_le(ni, le);
329
330 err = ni_insert_nonresident(ni, attr_s->type, attr_name(attr_s),
331 attr_s->name_len, run, 0, alen,
332 attr_s->flags, &attr, NULL);
333 if (err)
334 goto out3;
335
336 ntfs_free(attr_s);
336 kfree(attr_s);
337 attr->nres.data_size = cpu_to_le64(rsize);
338 attr->nres.valid_size = attr->nres.data_size;
339
340 *ins_attr = attr;
341
342 if (is_data)
343 ni->ni_flags &= ~NI_FLAG_RESIDENT;
344

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

351 memcpy(attr, attr_s, asize);
352 rec->used = cpu_to_le32(used + asize);
353 mi->dirty = true;
354out2:
355 /* undo: do not trim new allocated clusters */
356 run_deallocate(sbi, run, false);
357 run_close(run);
358out1:
337 attr->nres.data_size = cpu_to_le64(rsize);
338 attr->nres.valid_size = attr->nres.data_size;
339
340 *ins_attr = attr;
341
342 if (is_data)
343 ni->ni_flags &= ~NI_FLAG_RESIDENT;
344

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

351 memcpy(attr, attr_s, asize);
352 rec->used = cpu_to_le32(used + asize);
353 mi->dirty = true;
354out2:
355 /* undo: do not trim new allocated clusters */
356 run_deallocate(sbi, run, false);
357 run_close(run);
358out1:
359 ntfs_free(attr_s);
359 kfree(attr_s);
360 /*reinsert le*/
361out:
362 return err;
363}
364
365/*
366 * attr_set_size_res
367 *

--- 1729 unchanged lines hidden ---
360 /*reinsert le*/
361out:
362 return err;
363}
364
365/*
366 * attr_set_size_res
367 *

--- 1729 unchanged lines hidden ---