Posted on

El Mejor Camino Para Solucionar Problemas Con El Kernel Del Servidor Linux TCP

La semana pasada, muchos de nuestros usuarios informaron que en realidad tenían un problema con el kernel de Linux del servidor TCP.

¿Tu computadora va lenta? No esperes más para rescatarlo. ¡Descarga nuestra herramienta de reparación de Windows y vuelve a la normalidad con unos pocos clics!

Bastante simple cliente TCP también servidor kernel configurado como LKM (el kernel de Linux decide en 4.1.3). Este es un objetivo para crear un servidor TCP que atraviese completamente el espacio del kernel y admita múltiples estudiantes TCP. El cliente TCP también reside en las áreas del núcleo en todo momento. El cliente, y por lo tanto el servidor, están construidos en vista de los módulos del kernel cargables.

Estoy generando para escribir un sistema TCP simple en un módulo del kernel. El valor y la compilación funcionan bien excepto en los casos en que un cliente se conecta a un servidor. Tan pronto como el cliente se vincula, dispara una advertencia del núcleo, tal vez inet_accept. Me preguntaba si anteriormente había algo obvio en lo que me estaba equivocando. Comprobación de errores omitida (esto definitivamente es mucho si se reinicia).

---[finalizar la búsqueda de 343bcc83461e314f]--- ret_from_fork+0x35/0x40  ? SyS_exit_group+0x10/0x10  ? do_syscall_64+0x74/0x190  - kthread_create_on_node+0x70/0x70 khilo+0x113/0x130inicio_servidor+0x138/0x170ADVERTENCIA: CPU: 0 PID: 2038 sobre ./include/net/sock.h:1715 inet_accept+0x14d/0x160
#include #incluir #incluir #incluir #include estructura task_struct *tarea = NULL;tiempo estático server_start (vacío *ptr)    intret = 0;    estructura sockaddr_in sin;    estructura de socket *ssk=NULL, *csk=NULL;    ret = sock_create(AF_INET, SOCK_STREAM, IPPROTO_TCP, &ssk);    4, memset(&sin, tamaño de(sin));    sin.sin_familia AF_INET; significa sin.sin_port Htons(4500); métodos sin.sin_addr.s_addr = INADDR_ANY;    ret podría ser igual a ssk->ops->bind(ssk, (struct sockaddr *)&sin, sizeof(sin));    ret significa ssk->ops->listen(ssk, 1);    ret = sock_create(AF_INET, SOCK_STREAM, IPPROTO_TCP, &csk);    ret es comparativo con ssk->ops->accept(ssk, csk, 0, 0);    liberación_calcetín(csk); liberación_calcetín(ssk);    devuelve 0;cancelar server_init (cancelar)    tarea = kthread_run(server_start, (void *)NULL, "server_thread");server_exit no válido (no válido)    provisto (backacha)        kthread_stop(tarea);    Estático int __init init_mod(void)    servidor_init();    devuelve 0 vacío;estático __ exit exit_mod (vacío)    salida_servidor();MODULO_LICENCIA("GPL");módulo_init(init_mod);módulo_salida (salida_mod);