mount(2) 로 reiserfs 마운트할때..

hongwoo의 이미지

제 hdd1이 현재 ntfs로 포맷이 되어있습니다.

다음 코드와 같이 마운트를 시도하고 파일 시스템이 reiserfs가 아니라면, 에러를 리턴하려고 합니다.

mount("/dev/hdd1", 'data", "reiserfs", 0, NULL);

그런데 이런식으로 하게되면 이놈이 ntfs도 잘 마운트를 하고 에러도 리턴되지 않고 있네요...

혹시 이와 같은 문제를 어떻게 처리할 지 아시는 분 도움주시면 감사하겠습니다.

익명 사용자의 이미지

aeromarine wrote:
제 hdd1이 현재 ntfs로 포맷이 되어있습니다.

다음 코드와 같이 마운트를 시도하고 파일 시스템이 reiserfs가 아니라면, 에러를 리턴하려고 합니다.

mount("/dev/hdd1", 'data", "reiserfs", 0, NULL);

그런데 이런식으로 하게되면 이놈이 ntfs도 잘 마운트를 하고 에러도 리턴되지 않고 있네요...

혹시 이와 같은 문제를 어떻게 처리할 지 아시는 분 도움주시면 감사하겠습니다.

참고가 되련가 모르겠네요... kernel의 mount부분 처리 code입니다.
아래 보시면 type을 copy_mount_options() 에서 체크하는데 type이 valid한가만 채크하지 mount시킬 놈의 type하고 비교까지는 하지 않는 것 같네요... kernel을 수정하시거나 아니면 user plane에서 한번 걸러서 하셔야 겠습니다.

asmlinkage long sys_mount(char * dev_name, char * dir_name, char * type,
unsigned long flags, void * data)
{
int retval;
unsigned long data_page;
unsigned long type_page;
unsigned long dev_page;
char *dir_page;

retval = copy_mount_options (type, &type_page);
if (retval < 0)
return retval;

dir_page = getname(dir_name);
retval = PTR_ERR(dir_page);
if (IS_ERR(dir_page))
goto out1;

retval = copy_mount_options (dev_name, &dev_page);
if (retval < 0)
goto out2;

retval = copy_mount_options (data, &data_page);
if (retval < 0)
goto out3;

lock_kernel();
retval = do_mount((char*)dev_page, dir_page, (char*)type_page,
flags, (void*)data_page);
unlock_kernel();
free_page(data_page);

out3:
free_page(dev_page);
out2:
putname(dir_page);
out1:
free_page(type_page);
return retval;
}