void ldlm_proc_namespace(struct ldlm_namespace *ns)
{
struct lprocfs_vars lock_vars[2];
- char lock_names[MAX_STRING_SIZE];
+ char lock_names[MAX_STRING_SIZE+1];
memset(lock_vars, 0, sizeof(lock_vars));
- snprintf(lock_names, MAX_STRING_SIZE, "%s/resource_count",
- ns->ns_name);
+ snprintf(lock_names, MAX_STRING_SIZE, "%s/resource_count", ns->ns_name);
lock_names[MAX_STRING_SIZE] = '\0';
lock_vars[0].name = lock_names;
lock_vars[0].read_fptr = lprocfs_ll_rd;
#define MAX_STRING_SIZE 100
void ll_proc_namespace(struct super_block* sb, char* osc, char* mdc)
{
- char mnt_name[MAX_STRING_SIZE];
- char uuid_name[MAX_STRING_SIZE];
+ char mnt_name[MAX_STRING_SIZE+1];
+ char uuid_name[MAX_STRING_SIZE+1];
struct lprocfs_vars d_vars[3];
struct ll_sb_info *sbi = ll_s2sbi(sb);
struct obd_device* obd;
/* Register this mount instance with LProcFS */
- snprintf(mnt_name, 100, "mount_%s", sbi->ll_sb_uuid);
+ snprintf(mnt_name, MAX_STRING_SIZE, "mount_%s", sbi->ll_sb_uuid);
+ mnt_name[MAX_STRING_SIZE] = '\0';
sbi->ll_proc_root = lprocfs_reg_mnt(mnt_name);
- if (!sbi->ll_proc_root)
+ if (sbi->ll_proc_root == NULL) {
CDEBUG(D_OTHER, "Could not register FS");
+ return;
+ }
/* Add the static configuration info */
err = lprocfs_add_vars(sbi->ll_proc_root,status_var_nm_1, sb);
- if (err)
+ if (err) {
CDEBUG(D_OTHER, "Unable to add procfs variables\n");
-
+ return;
+ }
/* MDC */
obd = class_uuid2obd(mdc);
-
-
snprintf(mnt_name, MAX_STRING_SIZE, "status/%s/common_name",
obd->obd_type->typ_name);
-
+ mnt_name[MAX_STRING_SIZE] = '\0';
memset(d_vars, 0, sizeof(d_vars));
d_vars[0].read_fptr = rd_dev_name;
d_vars[0].write_fptr = NULL;
d_vars[0].name = mnt_name;
-
snprintf(uuid_name, MAX_STRING_SIZE, "status/%s/uuid",
obd->obd_type->typ_name);
+ uuid_name[MAX_STRING_SIZE] = '\0';
d_vars[1].read_fptr = rd_dev_uuid;
d_vars[1].write_fptr = NULL;
d_vars[1].name = uuid_name;
err = lprocfs_add_vars(sbi->ll_proc_root, d_vars, obd);
- if (err)
+ if (err) {
CDEBUG(D_OTHER, "Unable to add fs proc dynamic variables\n");
-
+ return;
+ }
/* OSC or LOV*/
obd = class_uuid2obd(osc);
/* Reuse mnt_name */
- snprintf(mnt_name, MAX_STRING_SIZE, "status/%s/common_name",
- obd->obd_type->typ_name);
-
+ snprintf(mnt_name, MAX_STRING_SIZE,
+ "status/%s/common_name", obd->obd_type->typ_name);
+ mnt_name[MAX_STRING_SIZE] = '\0';
memset(d_vars, 0, sizeof(d_vars));
d_vars[0].read_fptr = rd_dev_name;
d_vars[0].write_fptr = NULL;
snprintf(uuid_name, MAX_STRING_SIZE, "status/%s/uuid",
obd->obd_type->typ_name);
+ uuid_name[MAX_STRING_SIZE] = '\0';
d_vars[1].read_fptr = rd_dev_uuid;
d_vars[1].write_fptr = NULL;
d_vars[1].name = uuid_name;
err = lprocfs_add_vars(sbi->ll_proc_root, d_vars, obd);
- if (err)
+ if (err) {
CDEBUG(D_OTHER, "Unable to add fs proc dynamic variables\n");
-
+ return;
+ }
}
#undef MAX_STRING_SIZE
{
struct proc_dir_entry* new_root;
struct proc_dir_entry* temp_entry;
- char temp_string[MAX_STRING_SIZE];
+ char temp_string[MAX_STRING_SIZE+1];
char* my_str;
char* mover_str;
- strncpy(temp_string, string, MAX_STRING_SIZE-1);
+ strncpy(temp_string, string, MAX_STRING_SIZE);
temp_string[MAX_STRING_SIZE] = '\0';
new_root = root;
struct proc_dir_entry *temp_root;
struct proc_dir_entry *new_leaf;
struct proc_dir_entry *new_parent;
- char temp_string[MAX_STRING_SIZE];
+ char temp_string[MAX_STRING_SIZE+1];
if (list == NULL)
return 0;
temp_root = lprocfs_new_dir(root, list->name, tok);
if (temp_root == NULL) {
CDEBUG(D_OTHER, "!LProcFS: Mods: No root!");
- return -EINVAL;
+ return -ENOMEM;
}
/* Convert the last element into a leaf-node */
- strncpy(temp_string, temp_root->name, MAX_STRING_SIZE-1);
+ strncpy(temp_string, temp_root->name, MAX_STRING_SIZE);
temp_string[MAX_STRING_SIZE] = '\0';
new_parent = temp_root->parent;
remove_proc_entry(temp_root->name, new_parent);
new_leaf = create_proc_entry(temp_string, DEFAULT_MODE,
new_parent);
+ if (new_leaf == NULL) {
+ CERROR("LprocFS: No memory to create /proc entry %s",
+ temp_string);
+ return -ENOMEM;
+ }
new_leaf->read_proc = list->read_fptr;
new_leaf->write_proc = list->write_fptr;
if (data)