Hello Debian, Kernel 2.4.27-10 With mount isofs filesystem, any mount parameters after iocharset=,map=,session= are ignored.
Sample: mount -t isofs -o uid=100,iocharset=koi8-r,gid=100 /dev/cdrom /media/cdrom gid=100 - was ignored I look in source and find that problem. I make two patch, simply and full (what addeded some functionality - ignore wrong mount parameters) simply patch: =================================================================================== --- kernel-source-2.4.27/fs/isofs/inode.c 2005-05-19 13:29:39.000000000 +0300 +++ kernel-source/fs/isofs/inode.c 2005-08-11 11:55:12.000000000 +0300 @@ -340,13 +340,13 @@ else if (!strcmp(value,"acorn")) popt->map = 'a'; else return 0; } - if (!strcmp(this_char,"session") && value) { + else if (!strcmp(this_char,"session") && value) { char * vpnt = value; unsigned int ivalue = simple_strtoul(vpnt, &vpnt, 0); if(ivalue < 0 || ivalue >99) return 0; popt->session=ivalue+1; } - if (!strcmp(this_char,"sbsector") && value) { + else if (!strcmp(this_char,"sbsector") && value) { char * vpnt = value; unsigned int ivalue = simple_strtoul(vpnt, &vpnt, 0); if(ivalue < 0 || ivalue >660*512) return 0; =================================================================================== full patch: =================================================================================== --- kernel-source-2.4.27/fs/isofs/inode.c 2005-05-19 13:29:39.000000000 +0300 +++ kernel-source/fs/isofs/inode.c 2005-08-11 11:50:56.000000000 +0300 @@ -327,10 +327,11 @@ popt->iocharset = value; while (*value && *value != ',') value++; - if (value == popt->iocharset) - return 0; *value = 0; - } else + if (value == popt->iocharset){ + printk("Invalid or missed parameter:%s=%s,\n",this_char,value); + } + } #endif if (!strcmp(this_char,"map") && value) { if (value[0] && !value[1] && strchr("ano",*value)) @@ -338,28 +339,30 @@ else if (!strcmp(value,"off")) popt->map = 'o'; else if (!strcmp(value,"normal")) popt->map = 'n'; else if (!strcmp(value,"acorn")) popt->map = 'a'; - else return 0; + else printk("Invalid or missed parameter:%s=%s,\n",this_char,value); } if (!strcmp(this_char,"session") && value) { char * vpnt = value; unsigned int ivalue = simple_strtoul(vpnt, &vpnt, 0); - if(ivalue < 0 || ivalue >99) return 0; - popt->session=ivalue+1; + if(ivalue < 0 || ivalue >99) + printk("Invalid or missed parameter:%s=%s,\n",this_char,value); + else popt->session=ivalue+1; } if (!strcmp(this_char,"sbsector") && value) { char * vpnt = value; unsigned int ivalue = simple_strtoul(vpnt, &vpnt, 0); - if(ivalue < 0 || ivalue >660*512) return 0; - popt->sbsector=ivalue; + if(ivalue < 0 || ivalue >660*512) + printk("Invalid or missed parameter:%s=%s,\n",this_char,value); + else popt->sbsector=ivalue; } - else if (!strcmp(this_char,"check") && value) { + if (!strcmp(this_char,"check") && value) { if (value[0] && !value[1] && strchr("rs",*value)) popt->check = *value; else if (!strcmp(value,"relaxed")) popt->check = 'r'; else if (!strcmp(value,"strict")) popt->check = 's'; - else return 0; + else printk("Invalid or missed parameter:%s=%s,\n",this_char,value); } - else if (!strcmp(this_char,"conv") && value) { + if (!strcmp(this_char,"conv") && value) { /* no conversion is done anymore; we still accept the same mount options, but ignore them */ @@ -368,22 +371,24 @@ else if (!strcmp(value,"text")) ; else if (!strcmp(value,"mtext")) ; else if (!strcmp(value,"auto")) ; - else return 0; + else printk("Invalid or missed parameter:%s=%s,\n",this_char,value); } - else if (value && + if (value && (!strcmp(this_char,"block") || !strcmp(this_char,"mode") || !strcmp(this_char,"uid") || !strcmp(this_char,"gid"))) { char * vpnt = value; unsigned int ivalue = simple_strtoul(vpnt, &vpnt, 0); - if (*vpnt) return 0; + if (*vpnt) printk("Invalid or missed parameter:%s=%s,\n",this_char,value); + else switch(*this_char) { case 'b': if ( ivalue != 512 && ivalue != 1024 - && ivalue != 2048) return 0; - popt->blocksize = ivalue; + && ivalue != 2048) + printk("Invalid or missed parameter:%s=%s,\n",this_char,value); + else popt->blocksize = ivalue; break; case 'u': popt->uid = ivalue; @@ -396,7 +401,6 @@ break; } } - else return 1; } return 1; } =================================================================================== -- Best regards, Alexander -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]