|
@@ -1973,24 +1973,21 @@ static int __core_scsi3_write_aptpl_to_file(
|
|
|
struct t10_wwn *wwn = &dev->t10_wwn;
|
|
|
struct file *file;
|
|
|
int flags = O_RDWR | O_CREAT | O_TRUNC;
|
|
|
- char path[512];
|
|
|
+ char *path;
|
|
|
u32 pr_aptpl_buf_len;
|
|
|
int ret;
|
|
|
loff_t pos = 0;
|
|
|
|
|
|
- memset(path, 0, 512);
|
|
|
-
|
|
|
- if (strlen(&wwn->unit_serial[0]) >= 512) {
|
|
|
- pr_err("WWN value for struct se_device does not fit"
|
|
|
- " into path buffer\n");
|
|
|
- return -EMSGSIZE;
|
|
|
- }
|
|
|
+ path = kasprintf(GFP_KERNEL, "%s/pr/aptpl_%s", db_root,
|
|
|
+ &wwn->unit_serial[0]);
|
|
|
+ if (!path)
|
|
|
+ return -ENOMEM;
|
|
|
|
|
|
- snprintf(path, 512, "%s/pr/aptpl_%s", db_root, &wwn->unit_serial[0]);
|
|
|
file = filp_open(path, flags, 0600);
|
|
|
if (IS_ERR(file)) {
|
|
|
pr_err("filp_open(%s) for APTPL metadata"
|
|
|
" failed\n", path);
|
|
|
+ kfree(path);
|
|
|
return PTR_ERR(file);
|
|
|
}
|
|
|
|
|
@@ -2001,6 +1998,7 @@ static int __core_scsi3_write_aptpl_to_file(
|
|
|
if (ret < 0)
|
|
|
pr_debug("Error writing APTPL metadata file: %s\n", path);
|
|
|
fput(file);
|
|
|
+ kfree(path);
|
|
|
|
|
|
return (ret < 0) ? -EIO : 0;
|
|
|
}
|