diff options
author | Raphael S. Carvalho <raphael.scarv@gmail.com> | 2014-02-05 17:21:37 -0500 |
---|---|---|
committer | Gene Cumm <gene.cumm@gmail.com> | 2014-04-03 13:35:06 -0400 |
commit | 2bf0922e80b35c79fcc56318e71b1da29f55df0c (patch) | |
tree | abc13efcab93da3858d1545cde43dd7b69a3497f /core/fs/fs.c | |
parent | c9ec0d59759721ba363a16f1af1b639aa57527b5 (diff) | |
download | syslinux-2bf0922e80b35c79fcc56318e71b1da29f55df0c.tar.gz |
core: Avoid initializing the cache more than once
Most of file system drivers initialize the cache themselves.
The problem is that the same cache could be again initialized later,
then invalidating the previous one. This patch fixes this.
Problem found while auditing the code.
Signed-off-by: Raphael S. Carvalho <raphael.scarv@gmail.com>
Diffstat (limited to 'core/fs/fs.c')
-rw-r--r-- | core/fs/fs.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/core/fs/fs.c b/core/fs/fs.c index 6965d1da..0846c887 100644 --- a/core/fs/fs.c +++ b/core/fs/fs.c @@ -430,8 +430,9 @@ void fs_init(const struct fs_ops **ops, void *priv) } this_fs = &fs; - /* initialize the cache */ - if (fs.fs_dev && fs.fs_dev->cache_data) + /* initialize the cache only if it wasn't already initialized + * by the fs driver */ + if (fs.fs_dev && fs.fs_dev->cache_data && !fs.fs_dev->cache_init) cache_init(fs.fs_dev, blk_shift); /* start out in the root directory */ |