diff options
author | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2010-08-22 00:10:12 -0400 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2010-08-30 03:19:08 -0400 |
commit | ba2f48f70efcf4d82deafb2be327ed64b1f043a5 (patch) | |
tree | a05dd8287bb6588117f2a2a921b54f8ebf3425f4 /fs/ubifs/key.h | |
parent | 5b7a3a2e1b0cbc7d5410a8da60dac266a3e19268 (diff) |
UBIFS: mark unused key objects as invalid
When scanning the flash, UBIFS builds a list of flash nodes of type
'struct ubifs_scan_node'. Each scanned node has a 'snod->key' field. This field
is valid for most of the nodes, but invalid for some node type, e.g., truncation
nodes. It is safer to explicitly initialize such keys to something invalid,
rather than leaving them initialized to all zeros, which has key type of
UBIFS_INO_KEY.
This patch introduces new "fake" key type UBIFS_INVALID_KEY and initializes
unused 'snod->key' objects to this type. It also adds debugging assertions in
the TNC code to make sure no one ever tries to look these nodes up in the TNC.
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Diffstat (limited to 'fs/ubifs/key.h')
-rw-r--r-- | fs/ubifs/key.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/ubifs/key.h b/fs/ubifs/key.h index 0f530c684f0b..92a8491a8f8c 100644 --- a/fs/ubifs/key.h +++ b/fs/ubifs/key.h | |||
@@ -306,6 +306,20 @@ static inline void trun_key_init(const struct ubifs_info *c, | |||
306 | } | 306 | } |
307 | 307 | ||
308 | /** | 308 | /** |
309 | * invalid_key_init - initialize invalid node key. | ||
310 | * @c: UBIFS file-system description object | ||
311 | * @key: key to initialize | ||
312 | * | ||
313 | * This is a helper function which marks a @key object as invalid. | ||
314 | */ | ||
315 | static inline void invalid_key_init(const struct ubifs_info *c, | ||
316 | union ubifs_key *key) | ||
317 | { | ||
318 | key->u32[0] = 0xDEADBEAF; | ||
319 | key->u32[1] = UBIFS_INVALID_KEY; | ||
320 | } | ||
321 | |||
322 | /** | ||
309 | * key_type - get key type. | 323 | * key_type - get key type. |
310 | * @c: UBIFS file-system description object | 324 | * @c: UBIFS file-system description object |
311 | * @key: key to get type of | 325 | * @key: key to get type of |