Journal Mon premier hack du kernel !

Posté par  .
Étiquettes : aucune
0
21
mar.
2005
Cher journal,

Je ne peux résister plus longtemps. Je viens de réussir mon premier hack du kernel ! Enfin, je peux être considéré comme un hacker, un vrai de vrai !

Mon code ajoute le support du port série d'une "docking station" (hub usb, port série, parallèle et PS/2) de marque "Mobility" et de modèle "Easidock 200". Celle-ci n'était en effet pas reconnue auparavant.

Après avoir intégré mon code dans le kernel, tout marche nickel. Joie ! J'ai même envoyé un petit e-mail à la liste de diffusion pour demander l'intégration dans le futur noyau, et je m'en vais consulter le site linux-usb afin d'ajouter les informations manquantes.

...

Bon, j'avoue: j'ai rien écrit du tout. Enfin quasiment rien. Je me suis contenté d'analyser le hub, de trouver les références du chipset (FTDI SIO FT8U100AX), de regarder dans les sources, de voir comment je pouvais l'intégrer, de récupérer les ids "vendor" et "product" du hub et d'intégrer ces mêmes ids dans le code source dans la bonne catégorie. En gros, deux lignes de patch. Pfff. Minable. Je retourne dans l'ombre avec les mécréants dans mon genre qui ne sont même pas capables de lire du C correctement. Honte à moi.

Désolé. Je ne le ferais plus, promis.
  • # Mais non voyons

    Posté par  . Évalué à 10.

    Profite de ton (1/4 d') heure de gloire, balance un lien vers ton post sur la ML ou vers ton patch directement :-)
  • # Ah la première fois !...

    Posté par  . Évalué à 10.

    C'est vrai, la première fois on se sent un homme, un vrai !
    Sur ce, je vais hacker mon p'tit dèj....
  • # Détrompe toi !

    Posté par  . Évalué à 10.

    Bon, j'avoue: j'ai rien écrit du tout. Enfin quasiment rien. Je me suis contenté d'analyser le hub, de trouver les références du chipset (FTDI SIO FT8U100AX), de regarder dans les sources, de voir comment je pouvais l'intégrer, de récupérer les ids "vendor" et "product" du hub et d'intégrer ces mêmes ids dans le code source dans la bonne catégorie. En gros, deux lignes de patch. Pfff. Minable. Je retourne dans l'ombre avec les mécréants dans mon genre qui ne sont même pas capables de lire du C correctement. Honte à moi.

    Déjà ça c'est pas mal. Pour un certains nombre de cas, il suffit souvent de jeter deux trois coup d'oeuil à gauche pour faire que la révision B jusqu'ici inconnue fonctionne aussi bien que la révision A. Mais il faut quelqu'un pour jeter les coups d'oeuil.
    En plus des fois il y a un effet boule de neige, tu réécris deux lignes parcequ'une initialisation ne se fait pas sur le bon nombre d'octet et en faisant ça tu débloques une personne qui s'arrachait les cheveux 5 drivers plus loin.

    Donc bravo, et n'en reste pas là.
    • [^] # Re: Détrompe toi !

      Posté par  . Évalué à 9.

      Je suis d'accord avec Jerome, ce que tu as fait n'est pas négligeable. Et ce serait bien que plus de personnes aient la même attitude que toi. D'ailleurs si tu pouvais mettre en ligne un document expliquant en détail la façon dont tu as procédé, je suis sûr que cela pourrait servir à certains.

      Donc bravo, continue comme ça.
      • [^] # Re: Détrompe toi !

        Posté par  . Évalué à 6.

        Je m'en vais de ce pas publier ça. Avec un peu de chance, l'ami Google va répertorier le doc et ça aidera tous ceux qui ont ce hub.
  • # Tu peux donner plus de détails ?

    Posté par  (site web personnel) . Évalué à 1.

    Heu, t'es sur de ne pas te réjouir trop vite de ton hack ??

    Le Mobility USB EasyDock 200 est plus ou moins fonctionnel sous linux depuis aout 2000.
    http://www.qbik.ch/usb/devices/showdev.php?id=274(...)


    Tu peux afficher ta modif ici ?
    • [^] # Re: Tu peux donner plus de détails ?

      Posté par  . Évalué à 4.

      Mon hack ne concerne que le port série (note le signe "avertissement" en haut à droite) qui ne fonctionne pas "out of the box" sur une station linux, puisque le matériel n'est pas enregistré dans la liste de comptabilité.

      Allez zou, le diff:

      ftdi_sio.c:

      static struct usb_device_id id_table_sio [] = {
      { USB_DEVICE(FTDI_VID, FTDI_SIO_PID) },
      { USB_DEVICE(MOBILITY_VID, MOBILITY_EASIDOCK_PID) },
      { } /* Terminating entry */
      };


      ftdi_sio.h:

      /* Mobility Easidock 200
      */
      #define MOBILITY_VID 0x1342
      #define MOBILITY_EASIDOCK_PID 0x0202
  • # t'as bien de la chance

    Posté par  (site web personnel) . Évalué à 6.

    moi j'ai essayé de corriger un bug kde et ça n'a rien changé :

    http://bugs.kde.org/show_bug.cgi?id=66680(...)

    je sais pas trop ce que je pourrais faire pour qu'ils intégrent mon bout de code :-(

    Axel
    • [^] # Re: t'as bien de la chance

      Posté par  . Évalué à 7.

      Personnellement j'avais fait deux mini patchs pour KDE il y a pas mal de temps. Pour les faire intégrer je les ai envoyé directement sur la liste de diffusion correspondante. Ils ont été intégrés dans les heures qui ont suivi. Pour ton cas je pense que la liste kfm-devel (ou quelque chose dans le genre) devrait correspondre. Bonne chance. :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.