Удаление 58 сис. функции из ядра.

Internal structure and you change requests/suggestions

Удалить 58 сис. функцию из ядра?

Да.
29
14%
Да.
29
14%
Да.
29
14%
Да.
29
14%
Нет.
5
2%
Нет.
5
2%
Нет.
5
2%
Нет.
5
2%
Мне пофиг.
19
9%
Мне пофиг.
19
9%
Мне пофиг.
19
9%
Мне пофиг.
19
9%
 
Total votes: 212

User avatar
<Lrz>
Kernel Optimizer
Posts: 657
Joined: Mon Jan 16, 2006 7:58 pm

Удаление 58 сис. функции из ядра.

Post by <Lrz> »

В настоящее время 58 и 70 сис. функции выполняют схожие функции. 58 сис. функция досталась нам от MENUET.
Сейчас, все новые программы используют 70 сис. функцию.

Предлагаю удалить 58 сис. функцию, и больше не оборачиваться на совместимость.
Программы, у которых есть исходники, и они присутствуют на SVN будут переписаны на 70 сис. функцию.
User avatar
diamond
Kernel Developer
Posts: 1600
Joined: Mon Nov 28, 2005 8:00 pm

Re: Удаление 58 сис. функции из ядра.

Post by diamond »

Для информации: среди подфункций 58-й функции есть LBA-чтение с IDE-дисков 58.16, у которого отсутствует аналог в 70-й функции и которое используется программой hdread, исходники которой отсутствуют.

ЗЫ на всякий случай: лично мне пофиг на судьбу 58-й функции в целом и приложения hdread в частности, так и голосовал.
Mario

Re: Удаление 58 сис. функции из ядра.

Post by Mario »

Можно добавить такую-же подфункцию в функцию 70 если есть необходимость, так что я тоже проголосовал за третий вариант. Главное код работы с LBA не удалять.
User avatar
Nasarus
Posts: 269
Joined: Wed Jan 27, 2010 10:59 am

Re: Удаление 58 сис. функции из ядра.

Post by Nasarus »

Имхо, сначала нужно сделать аналог функции 58.12, и только потом уже удалять. Ибо удалить - самое легкое...
ушёл...
User avatar
art_zh
Kernel Developer
Posts: 1463
Joined: Fri Aug 14, 2009 1:46 am

Re: Удаление 58 сис. функции из ядра.

Post by art_zh »

Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите.
Когда-нибудь эту дырку придется так или иначе затыкать.

ИМХО имеет смысл сохранить LBA-сервис как опциональную подфункцию SysFn 70 для экспериментальных и встроенных версий ядра, отключив ее (условно-компилируемым блоком) в транке.
Кому надо - тот легко сможет подключить ее для собственных нужд.
FireWall
Posts: 101
Joined: Wed Sep 15, 2010 7:22 pm

Re: Удаление 58 сис. функции из ядра.

Post by FireWall »

А сделать так, чтобы функции 58 и 70 были совместимы между собой, а может быть просто были синонимами (в смысле подфункций) нельзя?

P.S.

Цитата: "Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите."

Если развивать систему в микроядерном направлении, то можно идти другим путём - проверять полномочия приложения выполнять тот или иной системный вызов (в смысле - из потенциально опасных).
Mario

Re: Удаление 58 сис. функции из ядра.

Post by Mario »

FireWall wrote:А сделать так, чтобы функции 58 и 70 были совместимы между собой, а может быть просто были синонимами (в смысле подфункций) нельзя?
Нельзя. Они не только отличаются номером функций подфункций. По сравнению с 70 функцией 58 вообще косорукий и одноногий инвалид. В 70 функции есть аналог VFS, 58 вообще не умеет возвращать директории в виде форматированного списка - она тупо возвращает содержимое либо файла либо папки в виде RAW данных. При работе с ней приложению (файловому менеджеру к примеру) приходилось самому разбираться со всей хитрой внутренней структурой каталогов FAT, про NTFS и Ext вообще речи не было на общесистемном уровне.
SII
Posts: 214
Joined: Wed Dec 26, 2007 5:09 am

Re: Удаление 58 сис. функции из ядра.

Post by SII »

FireWall wrote:Если развивать систему в микроядерном направлении, то можно идти другим путём - проверять полномочия приложения выполнять тот или иной системный вызов (в смысле - из потенциально опасных).
К микроядерности это никакого отношения не имеет. В целом ряде древних систем с монолитным ядром системные вызовы делились на привилегированные и непривилегированные; первые были доступны ограниченному кругу задач (например, привилегированная задача могла убить любую задачу в системе, а непривилегированная -- только любую задачу своего же пользователя).
User avatar
Asper
Posts: 988
Joined: Fri Jun 27, 2008 3:22 pm

Re: Удаление 58 сис. функции из ядра.

Post by Asper »

В принципе аналог 58.12 вроде бы придумал.
viewtopic.php?p=29459#p29459
Только
art_zh wrote:Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите.
и я бы оставил эту возможность только драйверам, сделав экспорт соответствующих функций ядра.

Да и 58.12 вроде бы использует приложение hdview замечательного товарища Trans'а. Приложение не имеет исходников. Кто-нибудь может с ним связаться?
Mario

Re: Удаление 58 сис. функции из ядра.

Post by Mario »

Asper
В принципе аналог 58.12 вроде бы придумал.
viewtopic.php?p=29459#p29459
Только
art_zh wrote:Прямой доступ к диску из пользовательского приложения - одна из опасных дыр в системной защите.
и я бы оставил эту возможность только драйверам, сделав экспорт соответствующих функций ядра.
Можно сделать условную компиляцию. Правда этот вопрос надо еще проработать.
Да и 58.12 вроде бы использует приложение hdview замечательного товарища Trans'а. Приложение не имеет исходников. Кто-нибудь может с ним связаться?
Связаться вряд ли, но при желании можно переписать с нуля - ничего в ней сложного нет (учитывая наличие Box_Lib сейчас), только времени на все не хватает.
User avatar
Asper
Posts: 988
Joined: Fri Jun 27, 2008 3:22 pm

Re: Удаление 58 сис. функции из ядра.

Post by Asper »

Вобщем 59 функция выглядит так:

Code: Select all

syscall_LBA_read_write:
    cmp   [lba_read_enabled], 1
    je	  @f
    mov   eax, 10   ; LBA access denied
    ret
 @@:

    test  edi, edi
    jnz   @f
    mov   eax, 7    ; No pointer to buffer
    ret
 @@:
    test  esi, esi
    jnz   @f
 .err_dev_name:
    mov   eax, 1    ; No pointer to device name
    ret
 @@:
    movzx eax, byte [esi+4]
    sub   al, '0'
    inc   al
    cmp   dword [esi], '/hd/'
    je	  @f

    cmp   dword [esi], '/bd/'
    jne   .err_dev_name
    dec   al
    add   al, 0x80
 @@:
    mov   [hdpos], eax

    push  ebx edi
    mov   eax, ecx
    xchg  ebx, edi
    test  edi, edi
    jz	  .read
    cmp   edi, 1
    je	  .write

    pop   edi ebx
    mov   eax, 2    ; Unknown function
    ret

 .read:
    call  hd_read
    jmp   .out

 .write:
    call  hd_write
 .out:
    pop   edi ebx
    xor   eax, eax
    cmp   [hd_error], 0
    je	  @f
    mov   eax, 11   ; Device error
 @@:
    ret
в syscall.inc добавил:

Code: Select all

      dd syscall_LBA_read_write           ; 59-LBA read and write
KERNEL.MNT.txt
Собранное ядро с сис. функцией 59
(73.04 KiB) Downloaded 324 times


Файл kernel.mnt.txt надо переименовать в kernel.mnt, форум блокирует "неизвестные" ему расширения.

Формат функции 59.
in:
eax = 59 ; номер функции
ebx = 0 или 1 ; номер подфункции: 0 - чтение, 1 - запись
ecx = номер блока для чтения/записи
edi = буфер данных для считывания/записи указанного блока (размером 512 байт)
esi = Путь к устройству (задаётся в формате 58 функции (например '/hd/2' или '/bd/1'))

out:
eax = код ошибки файловой системы
Программа считывающая MBR (винчестера или флешки) и опционально записывающая загрузочный сектор указанного устройства в файл /sys/bootsector.bin. Путь к устройству для считывания MBR зашито в коде программы (для смены устройства нужна перекомпиляция программы).
MBR_Reader.7z
MBR reader
(9.89 KiB) Downloaded 317 times
P.S. Я по прежнему считаю, что этой функции быть не должно в "нормальном" ядре.
User avatar
Nasarus
Posts: 269
Joined: Wed Jan 27, 2010 10:59 am

Re: Удаление 58 сис. функции из ядра.

Post by Nasarus »

Я за то, чтобы такая функция была в официально в ядре. Всё равно нету никакого ограничения доступа. Может просто добавить функцию включения/выключения возможности прямого доступа к диску?
ушёл...
Mario

Re: Удаление 58 сис. функции из ядра.

Post by Mario »

Зачем функцию? Можно сделать компиляцию по умолчанию без этой функции, а при необходимости компилировать с функцией.
Всё равно нету никакого ограничения доступа.
Неверное размышление. Выражаясь иносказательно - если всем разрешено носить личное оружие это не значит, что любому должна быть доступна атомная бомба. А такая функция по умолчанию - это атомная бомба для данных жесткого диска.
User avatar
Nasarus
Posts: 269
Joined: Wed Jan 27, 2010 10:59 am

Re: Удаление 58 сис. функции из ядра.

Post by Nasarus »

А может добавить в ядро диалог (только не смейтесь):

Code: Select all

Программа XYZ пытается получить прямой доступ к диску "/hd0/1". Разрешить?
{Да} {Нет}
ушёл...
Mario

Re: Удаление 58 сис. функции из ядра.

Post by Mario »

Падсталом... :lol:
Виста+Семерка - кошмарим юзера! :mrgreen:
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest