[Tomoyo-dev 14] CheckFilePerm2でGetPatternを呼ぶ条件を変更するパッチ

Zurück zum Archiv-Index

Kentaro Takeda k.tak****@gmail*****
2007年 3月 2日 (金) 15:05:59 JST


tomoyo-devの皆さま、武田です。
開発者が増えてにぎやかになってきそうですね。

仕様変更/性能改善パッチです。

[Tomoyo-dev 8]の引用
>・対話的にアクセス要求の可否を指示する ccs-queryd に関して
> 「ポリシーに追加した上でアクセス要求を許可」する際に、
> 必要に応じてポリシーを編集できるようにしてみました。

これに伴い、ccs-querydに渡されるパス名は例外ポリシのfile_patternを
参照しないようにしたほうがよさそうですよね。
対話的に追加するときにアクセス許可をユーザが任意に編集できるので。
また、今の実装では、学習モードでなくても、許可がないアクセスに対しては
GetPatternという重たい関数を呼んでいるので、
これを学習モードの時だけ呼ぶようにすることで性能が改善するはずです。

ということで、パッチを作成しました。

これをあてると以下のように変わります。
・ccs-querydにはパターンを含まない絶対パスがわたるようになる。
・学習モード以外ではGetPatternを呼ばないので、
 アクセス許可がないアクセスに対する処理が早くなる

どんなもんでしょう?

--- fs/tomoyo_file.c.orig       2007-02-14 00:00:00.000000000 +0900
+++ fs/tomoyo_file.c    2007-03-02 14:40:19.000000000 +0900
@@ -627,13 +627,15 @@ static int CheckFilePerm2(const struct p
        if (error) {
                struct domain_info * const domain = current->domain_info;
                const int is_enforce = CheckCCSEnforce(CCS_TOMOYO_MAC_FOR_FILE);
-               /* Don't use patterns if execution bit is on. */
-               const struct path_info *patterned_file = ((perm & 1)
== 0) ? GetPattern(filename) : filename;
                if (TomoyoVerboseMode()) {
                        printk("TOMOYO-%s: Access %d(%s) to %s denied
for %s\n", GetMSG(is_enforce), perm, operation, filename->name,
GetLastName(domain));
                }
-               if (is_enforce) error = CheckSupervisor("%s\n%d %s\n",
domain->domainname->name, perm, patterned_file->name);
-               else if (CheckCCSAccept(CCS_TOMOYO_MAC_FOR_FILE))
AddFileACL(patterned_file->name, perm, domain, 1, NULL);
+               if (is_enforce) error = CheckSupervisor("%s\n%d %s\n",
domain->domainname->name, perm, filename->name);
+               else if (CheckCCSAccept(CCS_TOMOYO_MAC_FOR_FILE)) {
+                       /* Don't use patterns if execution bit is on. */
+                       const struct path_info *patterned_file =
((perm & 1) == 0) ? GetPattern(filename) : filename;
+                       AddFileACL(patterned_file->name, perm, domain, 1, NULL);
+               }
                if (!is_enforce) error = 0;
        }
        return error;



tomoyo-dev メーリングリストの案内
Zurück zum Archiv-Index