|
|
|
Re: [PATCH] ax25.h unsigned long type for ax25 timers | |
| [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] | |
/* this will go away. Please do not export to user land */
struct ax25_info_struct_deprecated {
unsigned int n2, n2count;
unsigned int t1, t1timer;
unsigned int t2, t2timer;
unsigned int t3, t3timer;
unsigned int idle, idletimer;
unsigned int state;
unsigned int rcv_q, snd_q;
};
Three new items were included :
...
unsigned int vs, vr, va, vs_max;
unsigned int paclen;
unsigned int window;
};
At the same time case SIOCAX25GETINFOOLD:
was added in ax25_ioctl()
and would trigger a warning message.
/* old structure? */
if (cmd == SIOCAX25GETINFOOLD) {
static int warned = 0;
if (!warned) {
printk(KERN_INFO "%s uses old
SIOCAX25GETINFO\n",
current->comm);
warned=1;
}
if (copy_to_user(argp, &ax25_info,
sizeof(struct ax25_info_struct_deprecated))) {
res = -EFAULT;
break;
}
} else {
if (copy_to_user(argp, &ax25_info,
sizeof(struct ax25_info_struct))) {
res = -EINVAL;
break;
}
}
res = 0;
break;
Here is my question :
Can't we remove the probably quite old ax25_info_struct_deprecated
structure, and rename the present ax25_info_struct,
ax25_info_struct_deprecated, then create the new ax25_info_struct with
resized timers unsigned long ?
The second solution is to declare a new structure
* new ax25 info struct */
struct ax25_info_long_timers_struct {
unsigned int n2, n2count;
unsigned long t1, t1timer;
unsigned long t2, t2timer;
unsigned long t3, t3timer;
unsigned long idle, idletimer;
unsigned int state;
unsigned int rcv_q, snd_q;
unsigned int vs, vr, va, vs_max;
unsigned int paclen;
unsigned int window;
};
adding another case SIOCAX25GETNEWINFO
that would be defined
#define SIOCAX25GETNEWINFO (SIOCPROTOPRIVATE+14)
and trigger warning message by calls to SIOCAX25GETINFOOLD and
SIOCAX25GETINFO.
It that the right way to do it ?
Bernard, f6bvp
Bernard Pidoux wrote:
David, Your explanation is perfectly clear and I understand the problem now. Thank you very much for taking the time to explain me that. Bernard Pidoux David Miller wrote:From: Bernard Pidoux <bpidoux@xxxxxxx> Date: Thu, 19 Jun 2008 18:28:46 +0200Unfortunately I don't quite understand exactly why a structure in user space cannot be changed.Because there are userland binaries already compiled out there using the current structure layout. If we change the kernel, those binaries stop using a datastructure that matches what the kernel is using. Such binaries will break. In generic, because of this, you can never change the layout of a data structure exported to userland as a kernel interface.-- To unsubscribe from this list: send the line "unsubscribe linux-hams" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
-- To unsubscribe from this list: send the line "unsubscribe linux-hams" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
[Site Home] [Linux Newbie] [Kernel Newbies] [Memory] [Security] [Netfilter] [Linux Admin] [Bugtraq] [Rubini] [Photo] [Yosemite] [Yosemite News] [MIPS Linux] [ARM Linux] [ARM Linux Kernel] [Linux Networking] [Linux Security] [Linux RAID] [Samba] [Video 4 Linux] [Linux Resources]
![]() |