size_t kbufsize;
        struct seq_file *seq = &s->seq;
        struct statmount *sm = &s->sm;
-       u32 start = seq->count;
+       u32 start, *offp;
+
+       /* Reserve an empty string at the beginning for any unset offsets */
+       if (!seq->count)
+               seq_putc(seq, 0);
+
+       start = seq->count;
 
        switch (flag) {
        case STATMOUNT_FS_TYPE:
-               sm->fs_type = start;
+               offp = &sm->fs_type;
                ret = statmount_fs_type(s, seq);
                break;
        case STATMOUNT_MNT_ROOT:
-               sm->mnt_root = start;
+               offp = &sm->mnt_root;
                ret = statmount_mnt_root(s, seq);
                break;
        case STATMOUNT_MNT_POINT:
-               sm->mnt_point = start;
+               offp = &sm->mnt_point;
                ret = statmount_mnt_point(s, seq);
                break;
        case STATMOUNT_MNT_OPTS:
-               sm->mnt_opts = start;
+               offp = &sm->mnt_opts;
                ret = statmount_mnt_opts(s, seq);
                break;
        case STATMOUNT_OPT_ARRAY:
-               sm->opt_array = start;
+               offp = &sm->opt_array;
                ret = statmount_opt_array(s, seq);
                break;
        case STATMOUNT_OPT_SEC_ARRAY:
-               sm->opt_sec_array = start;
+               offp = &sm->opt_sec_array;
                ret = statmount_opt_sec_array(s, seq);
                break;
        case STATMOUNT_FS_SUBTYPE:
-               sm->fs_subtype = start;
+               offp = &sm->fs_subtype;
                statmount_fs_subtype(s, seq);
                break;
        case STATMOUNT_SB_SOURCE:
-               sm->sb_source = start;
+               offp = &sm->sb_source;
                ret = statmount_sb_source(s, seq);
                break;
        default:
 
        seq->buf[seq->count++] = '\0';
        sm->mask |= flag;
+       *offp = start;
        return 0;
 }