Thank you very much. I am trying to rewrite the code. and fix these issues. On Tue, Nov 5, 2019 at 7:43 PM Valdis Klētnieks wrote: > On Tue, 05 Nov 2019 17:59:43 +0900, Irfan Ullah said: > > > Thank you for the response. > > Attached are the files for kernel-user spaces communication. > > > //when I remove this wait the code does not work > > msleep(3000); > > If your code doesn't work, but sticking in random delays makes > it start working, you almost certainly have a race condition or > synchronization issue that should be fixed using proper locking. > > > void hello_exit(void) > > { > > //netlink_kernel_release(nl_sk); > > Congratulations. You just leaked a socket here, which is going to > make it difficult to use that socket until you either reboot or find a > way to close it properly before trying to create it again. > > > (code generates some warnings, but it is not severe and could be ignored > for the time being). > > You should do the following: > 1) Understand your code well enough so you understand *why* the compiler > issued the warning. > 2) Correct your code so the compiler doesn't complain. It almost certainly > understands C better than you do. > > gcc 9.2.1 emits one warning on the kernel module code at default warning > levels. And it's one you *really* need to fix, because it indicates that > you > and the compiler are not on the same page about what types your variables > are. > Since it's going to go ahead and generate code based on what types *it* > thinks > your variables are, you will have nothing but pain and anguish debugging if > you thought they were some other type.... > > In fact, you may want to compile the kernel module with 'make W=1' to get > more > warnings. If your system has sparse, you should use 'make W=1 C=1'. > > And all the warnings this generates are things that shouldn't be seen in > clean > kernel code. > > I didn't bother looking closely at your userspace. I gave up > when I saw this: > > 14 int sock_fd; > (...) > 68 void user_space_receiver() > 69 { > (...) > 96 user_space_receiver(sock_fd); > > There's 2 basic ways to pass a variable to a function. You're trying > to use both of them here. Pick one and use it properly. > > Oh - and there's no possible way to reach the close(sock_fd); on line > 77, because the rest of the function infinite loops without a break. At > the > very least, you should be checking the return code from recvmsg() and > exiting the while(1) loop if there's an issue. > > Bottom line: You need to get a *lot* more experience writing proper > C code in userspace before you try to write kernel code. > -- *Best Regards,* *Mr. Irfan Ullah* PhD Candidate Data and Knowledge Engineering(DKE) Lab Department of Computer Science and Engineering Kyung Hee University, South Korea. +82-010-591-51651 <+82%2010-3877-8867> sahibzada.iu@gmail.com sahibzada_irfanullah