Report #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fait moi un retours de qualité de code sur le projet.
Retour qualité de code — Revue complète
✅ Points forts globaux
01_basic_module: bonne initiative pour comparer les approchescopy_to_user/copy_from_useravec retour-EFAULTpr_info/pr_errplutôt queprintkbrut ✓MODULE_LICENSE("GPL")correctement mis sur les modules 06-10 ✓.clang-formatinclus depuis le source kernel ✓⚠️ Points à corriger
01_basic_module—MODULE_LICENSE("MIT License")invalide"MIT License"n'est pas reconnu par le kernel → module taché (Pflag dansdmesg). Utiliser"GPL"ou"Dual MIT/GPL".Même problème sur
02_module_params,03_character_device,04_process_monitor,05_packet_filter.03_character_device— Pas declass_create/device_createL'enregistrement avec
register_chrdevcrée le majeur mais pas le nœud/dev/flodev. Il faut créer la classe et le device node :Sans ça,
mknodmanuel requis pour tester.03_character_device— Buffermsg[256]non protégéAccès concurrent possible sans mutex. Pour l'apprentissage c'est OK, mais à noter pour la production.
05_packet_filter— Appeltcp_hdr()avant vérification protocoleSur un paquet UDP/ICMP,
tcp_hdr()retourne des données invalides → comportement indéfini.07_virtual_leds_more_complex— Fuite mémoire surled->namedans legoto failLe
ledalloué au touricourant (avant legoto) n'est pas libéré siled_classdev_registeréchoue. Lekfree(led->name)etkfree(led)dans le bloc d'erreur immédiat est correct, mais la bouclefailcommence ài-1alors que leledcourant a déjà été libéré. C'est OK dans ce cas précis mais fragile — à clarifier.09_gpio_led_rpi3— Déclarationint retaprès statementEn C89/C90 (kernel style strict), les déclarations doivent être en début de bloc. Même si ça compile,
checkpatch.plva le signaler.10_lightning_node_pro_led— Probe videLe
probene fait que logger. Pour un vrai driver, il faudraithid_parse()+hid_hw_start()au minimum, sinon le device HID ne sera pas initialisé correctement :Mais si c'est intentionnellement un skeleton pour l'apprentissage, c'est OK.
💡 Suggestions pour aller plus loin
03_character_device: Version Rust avecmiscdev— c'est là que l'API Rust kernel brille vraiment05_packet_filter: Ajouter un paramètre module pour le port filtré (comme fait dans08_gpio_pin_rpi3avecgpio_pin)07_virtual_leds_more_complex: Utiliserdevm_*allocations pour simplifier le cleanup10_lightning_node_pro_led: Compléter avechid_parse+hid_hw_start+ envoi de commandes USB HID pour vraiment contrôler les LEDsRevue effectuée par openclaw — 21 mars 2026
@openclaw Peut-tu faire le renommage de la license vers Dual MIT/GPT
@openclaw Fait la partie
sans close cette issue et sur trois branche différente
@openclaw Corrige
@florian.richer Suite à ton commentaire, 2 nouvelles PRs :
09_gpio_led_rpi3: déclarationint retdéplacée en début de bloc dansregister_rpi3_led()(style kernel C89/C90, checkpatch compliant)10_lightning_node_pro_led: ajout dehid_parse()+hid_hw_start()dans le probe +hid_hw_stop()dans remove@openclaw Fait moi maintenant
@florian.richer 2 PRs ouvertes :
05_packet_filter: paramètrefilter_portajouté, port 8080 hardcodé remplacé07_virtual_leds_more_complex: refactorisé avecdevm_*+platform_deviceparent (nécessaire cardevm_*requiert unstruct device *valide)Pour le
03_character_deviceen Rust avecmiscdev: avant de coder, j'ai besoin de savoir quelle version du kernel tu cibles. L'APImiscdevRust est instable et a beaucoup bougé entre les versions. Le README mentionne un patch en cours pour les LED Rust bindings, ce qui suggère un kernel récent/custom — lequel exactement ?@florian.richer 3 PRs ouvertes :
05_packet_filter: paramètrefilter_portconfigurable07_virtual_leds_more_complex: refactodevm_*+platform_device03_character_deviceen Rust avecmiscdev: non testé à la compilation, l'API Rustmiscdev/IoBufferReaderpeut avoir bougé surlinux_latest. À tester de ton côté avant merge.Forgejo ne semble pas supporter le passage en draft via API — peux-tu passer la #10 en draft manuellement depuis l'UI ?