inode.c (fa3cacf544636b2dc48cfb2f277a2071f14d66a2) inode.c (195c52bdd5d5ecfdabf5a7c6159efe299e534f84)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 *
4 * Copyright (C) 2019-2021 Paragon Software GmbH, All rights reserved.
5 *
6 */
7
8#include <linux/blkdev.h>

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

1091ntfs_create_reparse_buffer(struct ntfs_sb_info *sbi, const char *symname,
1092 u32 size, u16 *nsize)
1093{
1094 int i, err;
1095 struct REPARSE_DATA_BUFFER *rp;
1096 __le16 *rp_name;
1097 typeof(rp->SymbolicLinkReparseBuffer) *rs;
1098
1// SPDX-License-Identifier: GPL-2.0
2/*
3 *
4 * Copyright (C) 2019-2021 Paragon Software GmbH, All rights reserved.
5 *
6 */
7
8#include <linux/blkdev.h>

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

1091ntfs_create_reparse_buffer(struct ntfs_sb_info *sbi, const char *symname,
1092 u32 size, u16 *nsize)
1093{
1094 int i, err;
1095 struct REPARSE_DATA_BUFFER *rp;
1096 __le16 *rp_name;
1097 typeof(rp->SymbolicLinkReparseBuffer) *rs;
1098
1099 rp = ntfs_zalloc(ntfs_reparse_bytes(2 * size + 2));
1099 rp = kzalloc(ntfs_reparse_bytes(2 * size + 2), GFP_NOFS);
1100 if (!rp)
1101 return ERR_PTR(-ENOMEM);
1102
1103 rs = &rp->SymbolicLinkReparseBuffer;
1104 rp_name = rs->PathBuffer;
1105
1106 /* Convert link name to utf16 */
1107 err = ntfs_nls_to_utf16(sbi, symname, size,

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

1146 rp_name += err;
1147 rp_name[0] = cpu_to_le16('\\');
1148 rp_name[1] = cpu_to_le16('?');
1149 rp_name[2] = cpu_to_le16('?');
1150 rp_name[3] = cpu_to_le16('\\');
1151
1152 return rp;
1153out:
1100 if (!rp)
1101 return ERR_PTR(-ENOMEM);
1102
1103 rs = &rp->SymbolicLinkReparseBuffer;
1104 rp_name = rs->PathBuffer;
1105
1106 /* Convert link name to utf16 */
1107 err = ntfs_nls_to_utf16(sbi, symname, size,

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

1146 rp_name += err;
1147 rp_name[0] = cpu_to_le16('\\');
1148 rp_name[1] = cpu_to_le16('?');
1149 rp_name[2] = cpu_to_le16('?');
1150 rp_name[3] = cpu_to_le16('\\');
1151
1152 return rp;
1153out:
1154 ntfs_free(rp);
1154 kfree(rp);
1155 return ERR_PTR(err);
1156}
1157
1158struct inode *ntfs_create_inode(struct user_namespace *mnt_userns,
1159 struct inode *dir, struct dentry *dentry,
1160 const struct cpu_str *uni, umode_t mode,
1161 dev_t dev, const char *symname, u32 size,
1162 struct ntfs_fnd *fnd)

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

1614 clear_nlink(inode);
1615 ni->mi.dirty = false;
1616 discard_new_inode(inode);
1617out3:
1618 ntfs_mark_rec_free(sbi, ino);
1619
1620out2:
1621 __putname(new_de);
1155 return ERR_PTR(err);
1156}
1157
1158struct inode *ntfs_create_inode(struct user_namespace *mnt_userns,
1159 struct inode *dir, struct dentry *dentry,
1160 const struct cpu_str *uni, umode_t mode,
1161 dev_t dev, const char *symname, u32 size,
1162 struct ntfs_fnd *fnd)

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

1614 clear_nlink(inode);
1615 ni->mi.dirty = false;
1616 discard_new_inode(inode);
1617out3:
1618 ntfs_mark_rec_free(sbi, ino);
1619
1620out2:
1621 __putname(new_de);
1622 ntfs_free(rp);
1622 kfree(rp);
1623
1624out1:
1625 if (err)
1626 return ERR_PTR(err);
1627
1628 unlock_new_inode(inode);
1629
1630 return inode;

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

1857
1858 if (!attr->non_res) {
1859 rp = resident_data_ex(attr, i_size);
1860 if (!rp) {
1861 err = -EINVAL;
1862 goto out;
1863 }
1864 } else {
1623
1624out1:
1625 if (err)
1626 return ERR_PTR(err);
1627
1628 unlock_new_inode(inode);
1629
1630 return inode;

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

1857
1858 if (!attr->non_res) {
1859 rp = resident_data_ex(attr, i_size);
1860 if (!rp) {
1861 err = -EINVAL;
1862 goto out;
1863 }
1864 } else {
1865 rp = ntfs_malloc(i_size);
1865 rp = kmalloc(i_size, GFP_NOFS);
1866 if (!rp) {
1867 err = -ENOMEM;
1868 goto out;
1869 }
1870 to_free = rp;
1871 err = ntfs_read_run_nb(sbi, &ni->file.run, 0, rp, i_size, NULL);
1872 if (err)
1873 goto out;

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

1967 for (i = 0; i < err; i++) {
1968 if (buffer[i] == '\\')
1969 buffer[i] = '/';
1970 }
1971
1972 /* Always set last zero */
1973 buffer[err] = 0;
1974out:
1866 if (!rp) {
1867 err = -ENOMEM;
1868 goto out;
1869 }
1870 to_free = rp;
1871 err = ntfs_read_run_nb(sbi, &ni->file.run, 0, rp, i_size, NULL);
1872 if (err)
1873 goto out;

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

1967 for (i = 0; i < err; i++) {
1968 if (buffer[i] == '\\')
1969 buffer[i] = '/';
1970 }
1971
1972 /* Always set last zero */
1973 buffer[err] = 0;
1974out:
1975 ntfs_free(to_free);
1975 kfree(to_free);
1976 return err;
1977}
1978
1979static const char *ntfs_get_link(struct dentry *de, struct inode *inode,
1980 struct delayed_call *done)
1981{
1982 int err;
1983 char *ret;

--- 46 unchanged lines hidden ---
1976 return err;
1977}
1978
1979static const char *ntfs_get_link(struct dentry *de, struct inode *inode,
1980 struct delayed_call *done)
1981{
1982 int err;
1983 char *ret;

--- 46 unchanged lines hidden ---