独自ディレクトリ操作API実行時、ディレクトリエントリ情報の排他が行われない問題について
発行番号: Cente101-0125
Rev: 第1版
発行日: 2025/2/3
【題名】
独自ディレクトリ操作API実行時、ディレクトリエントリ情報の排他が行われない問題について
【適用製品】
Cente FileSystem Ver6.42 ~ Ver6.51
【影響API】
rmdir_all, rmdir_all_uni, dinfo, dinfo_uni, readdir_wc, readdir_wc_uni
【現象】
他のタスクと処理がぶつかった場合に、
独自ディレクトリ操作APIでディレクトリエントリ情報が壊れる可能性があります。
また、誤ったディレクトリエントリ情報を読み出す可能性があります。
《発生条件について》
以下の条件を全て満たした場合に発生します。
①OSを使用(複数タスク使用時)
②ディレクトリキャッシュを使用
③独自ディレクトリ操作API使用
【原因】
内部関数のfs_get_direntry()及びfs_get_direntry_uni()は、Cente FileSystem Ver6.42にて独自ディレクトリ操作API用に追加しております。
Centeの設計上、ディレクトリエントリ領域へアクセスする関数に関しては、上位でディレクトリエントリのセマフォロックをする必要がありますが、
Ver6.42で追加したfs_get_direntry()及びfs_get_direntry_uni()ではディレクトリエントリのセマフォロックが抜けておりました。
その為、fs_get_direntry()及びfs_get_direntry_uni()をコールする独自ディレクトリ操作APIを実行した場合に、
セマフォの資源を獲得せずディレクトリエントリ情報更新が行われ、誤動作する可能性があります。
【回避方法】
複数タスクから影響APIを同時に実行しない。
■プログラムによる回避方法
修正ソースにつきましては、弊社サポートまでお問い合わせ下さい。