read/write 퍼미션 체크시 f_mode를 사용해야 하는 이유는?

tombraid의 이미지

오렐리에서 나온 리눅스 디바이스 드라이버 책 예제인 scull을 보다보니 파이프 open시 다음과 같은 부분이 있습니다.

    /* use f_mode,not  f_flags: it's cleaner (fs/open.c tells why) */
    if (filp->f_mode & FMODE_READ)
        dev->nreaders++;
    if (filp->f_mode & FMODE_WRITE)
        dev->nwriters++;

책에도 read/write 퍼미션 체크는 f_flags 보다는 f_mode 를 사용해야 한다라고 써있네요.

fs/open.c 를 보면 f_mode 는 f_flags를 이용해서 세팅하는 것 같은데. 왜 f_mode를 사용해야 하는거죠?

fs/open.c 를 보라고 했는데, 봐도 잘 모르겠네요.. --;;