Posted on

Meilleur Moyen De Résoudre Les Problèmes Avec Le Noyau Du Site Linux TCP

La semaine dernière, certains utilisateurs humains ont signalé qu’ils avaient un problème spécifique avec le noyau Linux sur le serveur TCP.

Votre ordinateur est lent ? N'attendez plus pour le secourir. Téléchargez notre outil de réparation Windows et remettez-vous sur les rails en quelques clics !

Client TCP et serveur noyau assez simplifiés modifiés en tant que LKM (produit noyau Linux 4.1.3). Il s’agit d’une tentative de cultiver un serveur TCP qui tourne complètement l’espace du noyau et prend en charge un certain nombre d’étudiants TCP. De plus, le client TCP réside dans l’espace du noyau à tout moment. Le client, et donc ce serveur, sont construits en tant que modules de noyau chargeables.

J’essaie d’écrire du contenu sur un simple serveur TCP dans un module du noyau. Le code et le système fonctionnent bien sauf dans les cas où un acheteur se connecte à un serveur. Aussitôt que le client se connecte, il déclenche un avertissement du noyau si inet_accept. Je me demandais s’il y avait quelque chose de simple que je faisais mal. Vérification des erreurs omise (il s’agit d’une propriété si rets).

---[ trace de fin 343bcc83461e314f ]--- ret_from_fork+0x35/0x40  ? SyS_exit_group+0x10/0x10  ? do_syscall_64+0x74/0x190  ? kthread_create_on_node+0x70/0x70 kthread+0x113/0x130server_start+0x138/0x170ATTENTION : CPU : 0 PID : 2038 dans ./include/net/sock.h:1715 inet_accept+0x14d/0x160
#include #include #include #include #include structure task_struct *task = NULL ;intervalle statique server_start (void *ptr)    int ret est égal à 0 ;    struct sockaddr_in sin;    structure de sortie *ssk=NULL, *csk=NULL ;    ret = sock_create(AF_INET, SOCK_STREAM, IPPROTO_TCP, &ssk);    0, memset(&sin, sizeof(sin));    sin.sin_family AF_INET ; peut signifier sin.sin_port Htons(4500); implique sin.sin_addr.s_addr = INADDR_ANY ;    ret est une version comparable à ssk->ops->bind(ssk, (struct sockaddr *)&sin, sizeof(sin));    ret équivaut à ssk->ops->listen(ssk, 1);    ret est égal à sock_create(AF_INET, SOCK_STREAM, IPPROTO_TCP, &csk);    ret est égal à ssk->ops->accept(ssk, csk, 0, 0);    chaussette_release(csk); chaussette_release(ssk);    récupère 0 ;annuler server_init (annuler)    position = kthread_run(server_start, (void *)NULL, "server_thread");sortie_serveur invalide (invalide)    récompensé (backacha)        kthread_stop(tâche);    Statique int __init init_mod(void)    serveur_init();    revient vide 0;statique __exit exit_mod(void)    sortie_serveur();MODULE_LICENSE("GPL");module_init(init_mod);module_sortie (sortie_mod);