Current-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Question about tmpfs



In article <52713DFF.2000807%m00nbsd.net@localhost>,
Maxime Villard  <max%m00nbsd.net@localhost> wrote:
>Hi,
>I have a question regarding the function tmpfs_alloc_node() in
>fs/tmpfs/tmpfs_subr.c. When alloc'ing the area for symlinks,
>there's this code:
>
>l.171
>       nnode->tn_size = strlen(target);
>       if (nnode->tn_size == 0) {
>               nnode->tn_spec.tn_lnk.tn_link = NULL;
>               break;
>       }
>       nnode->tn_spec.tn_lnk.tn_link =
>           tmpfs_strname_alloc(tmp, nnode->tn_size);
>       if (nnode->tn_spec.tn_lnk.tn_link == NULL) {
>               tmpfs_node_put(tmp, nnode);
>               return ENOSPC;
>       }
>       memcpy(nnode->tn_spec.tn_lnk.tn_link, target, nnode->tn_size);
>
>Only strlen(target) bytes are allocated for 'target', and only
>strlen(target) bytes are copied from 'target' to 'tn_link'.
>
>Why isn't the '\0' taken into account? Is this intentional?

I don't think it is from a quick reading. The only reason it works,
is because most of the time it rounds up.

christos



Home | Main Index | Thread Index | Old Index