memset(enabled, 0, sizeof(enabled));
if (qsd_type_enabled(qsd, USRQUOTA))
- strcat(enabled, "u");
+ strncat(enabled, "u", sizeof(enabled) - strlen(enabled));
if (qsd_type_enabled(qsd, GRPQUOTA))
- strcat(enabled, "g");
+ strncat(enabled, "g", sizeof(enabled) - strlen(enabled));
if (qsd_type_enabled(qsd, PRJQUOTA))
- strncat(enabled, "p", 1);
+ strncat(enabled, "p", sizeof(enabled) - strlen(enabled));
if (strlen(enabled) == 0)
- strcat(enabled, "none");
+ strncat(enabled, "none", sizeof(enabled) - strlen(enabled));
seq_printf(m, "%s\n", enabled);
return 0;
qsd->qsd_ns = NULL;
}
- /* free per-quota type data */
- for (qtype = USRQUOTA; qtype < LL_MAXQUOTAS; qtype++)
- qsd_qtype_fini(env, qsd, qtype);
-
- /* deregister connection to the quota master */
- qsd->qsd_exp_valid = false;
- lustre_deregister_lwp_item(&qsd->qsd_exp);
-
/* release per-filesystem information */
if (qsd->qsd_fsinfo != NULL) {
mutex_lock(&qsd->qsd_fsinfo->qfs_mutex);
qsd->qsd_fsinfo = NULL;
}
+ /* free per-quota type data */
+ for (qtype = USRQUOTA; qtype < LL_MAXQUOTAS; qtype++)
+ qsd_qtype_fini(env, qsd, qtype);
+
+ /* deregister connection to the quota master */
+ qsd->qsd_exp_valid = false;
+ lustre_deregister_lwp_item(&qsd->qsd_exp);
+
/* release quota root directory */
if (qsd->qsd_root != NULL) {
dt_object_put(env, qsd->qsd_root);