]> git.pld-linux.org Git - packages/kernel.git/blob - 2.6.0-t10-POSIX_message_queues-1of2-lkml.patch
- CSZ scheduler removed from kernel tree.
[packages/kernel.git] / 2.6.0-t10-POSIX_message_queues-1of2-lkml.patch
1 diff -urN 2.6.0-test10-orig_1/ipc/msg.c 2.6.0-test10-patched_1/ipc/msg.c
2 --- 2.6.0-test10-orig_1/ipc/msg.c       2003-11-07 17:07:13.000000000 +0100
3 +++ 2.6.0-test10-patched_1/ipc/msg.c    2003-11-21 17:11:17.000000000 +0100
4 @@ -51,11 +51,6 @@
5         struct task_struct* tsk;
6  };
7  
8 -struct msg_msgseg {
9 -       struct msg_msgseg* next;
10 -       /* the next part of the message follows immediately */
11 -};
12 -
13  #define SEARCH_ANY             1
14  #define SEARCH_EQUAL           2
15  #define SEARCH_NOTEQUAL                3
16 @@ -129,106 +124,6 @@
17         return msg_buildid(id,msq->q_perm.seq);
18  }
19  
20 -static void free_msg(struct msg_msg* msg)
21 -{
22 -       struct msg_msgseg* seg;
23 -
24 -       security_msg_msg_free(msg);
25 -
26 -       seg = msg->next;
27 -       kfree(msg);
28 -       while(seg != NULL) {
29 -               struct msg_msgseg* tmp = seg->next;
30 -               kfree(seg);
31 -               seg = tmp;
32 -       }
33 -}
34 -
35 -static struct msg_msg* load_msg(void* src, int len)
36 -{
37 -       struct msg_msg* msg;
38 -       struct msg_msgseg** pseg;
39 -       int err;
40 -       int alen;
41 -
42 -       alen = len;
43 -       if(alen > DATALEN_MSG)
44 -               alen = DATALEN_MSG;
45 -
46 -       msg = (struct msg_msg *) kmalloc (sizeof(*msg) + alen, GFP_KERNEL);
47 -       if(msg==NULL)
48 -               return ERR_PTR(-ENOMEM);
49 -
50 -       msg->next = NULL;
51 -       msg->security = NULL;
52 -
53 -       if (copy_from_user(msg+1, src, alen)) {
54 -               err = -EFAULT;
55 -               goto out_err;
56 -       }
57 -
58 -       len -= alen;
59 -       src = ((char*)src)+alen;
60 -       pseg = &msg->next;
61 -       while(len > 0) {
62 -               struct msg_msgseg* seg;
63 -               alen = len;
64 -               if(alen > DATALEN_SEG)
65 -                       alen = DATALEN_SEG;
66 -               seg = (struct msg_msgseg *) kmalloc (sizeof(*seg) + alen, GFP_KERNEL);
67 -               if(seg==NULL) {
68 -                       err=-ENOMEM;
69 -                       goto out_err;
70 -               }
71 -               *pseg = seg;
72 -               seg->next = NULL;
73 -               if(copy_from_user (seg+1, src, alen)) {
74 -                       err = -EFAULT;
75 -                       goto out_err;
76 -               }
77 -               pseg = &seg->next;
78 -               len -= alen;
79 -               src = ((char*)src)+alen;
80 -       }
81 -       
82 -       err = security_msg_msg_alloc(msg);
83 -       if (err)
84 -               goto out_err;
85 -
86 -       return msg;
87 -
88 -out_err:
89 -       free_msg(msg);
90 -       return ERR_PTR(err);
91 -}
92 -
93 -static int store_msg(void* dest, struct msg_msg* msg, int len)
94 -{
95 -       int alen;
96 -       struct msg_msgseg *seg;
97 -
98 -       alen = len;
99 -       if(alen > DATALEN_MSG)
100 -               alen = DATALEN_MSG;
101 -       if(copy_to_user (dest, msg+1, alen))
102 -               return -1;
103 -
104 -       len -= alen;
105 -       dest = ((char*)dest)+alen;
106 -       seg = msg->next;
107 -       while(len > 0) {
108 -               alen = len;
109 -               if(alen > DATALEN_SEG)
110 -                       alen = DATALEN_SEG;
111 -               if(copy_to_user (dest, seg+1, alen))
112 -                       return -1;
113 -               len -= alen;
114 -               dest = ((char*)dest)+alen;
115 -               seg=seg->next;
116 -       }
117 -       return 0;
118 -}
119 -
120  static inline void ss_add(struct msg_queue* msq, struct msg_sender* mss)
121  {
122         mss->tsk=current;
123 diff -urN 2.6.0-test10-orig_1/ipc/util.c 2.6.0-test10-patched_1/ipc/util.c
124 --- 2.6.0-test10-orig_1/ipc/util.c      2003-11-07 17:07:13.000000000 +0100
125 +++ 2.6.0-test10-patched_1/ipc/util.c   2003-11-21 17:11:17.000000000 +0100
126 @@ -611,3 +611,107 @@
127  }
128  
129  #endif /* CONFIG_SYSVIPC */
130 +
131 +#ifdef CONFIG_SYSVIPC
132 +
133 +void free_msg(struct msg_msg* msg)
134 +{
135 +       struct msg_msgseg* seg;
136 +
137 +       security_msg_msg_free(msg);
138 +
139 +       seg = msg->next;
140 +       kfree(msg);
141 +       while(seg != NULL) {
142 +               struct msg_msgseg* tmp = seg->next;
143 +               kfree(seg);
144 +               seg = tmp;
145 +       }
146 +}
147 +
148 +struct msg_msg* load_msg(void* src, int len)
149 +{
150 +       struct msg_msg* msg;
151 +       struct msg_msgseg** pseg;
152 +       int err;
153 +       int alen;
154 +
155 +       alen = len;
156 +       if(alen > DATALEN_MSG)
157 +               alen = DATALEN_MSG;
158 +
159 +       msg = (struct msg_msg *) kmalloc (sizeof(*msg) + alen, GFP_KERNEL);
160 +       if(msg==NULL)
161 +               return ERR_PTR(-ENOMEM);
162 +
163 +       msg->next = NULL;
164 +       msg->security = NULL;
165 +
166 +       if (copy_from_user(msg+1, src, alen)) {
167 +               err = -EFAULT;
168 +               goto out_err;
169 +       }
170 +
171 +       len -= alen;
172 +       src = ((char*)src)+alen;
173 +       pseg = &msg->next;
174 +       while(len > 0) {
175 +               struct msg_msgseg* seg;
176 +               alen = len;
177 +               if(alen > DATALEN_SEG)
178 +                       alen = DATALEN_SEG;
179 +               seg = (struct msg_msgseg *) kmalloc (sizeof(*seg) + alen, GFP_KERNEL);
180 +               if(seg==NULL) {
181 +                       err=-ENOMEM;
182 +                       goto out_err;
183 +               }
184 +               *pseg = seg;
185 +               seg->next = NULL;
186 +               if(copy_from_user (seg+1, src, alen)) {
187 +                       err = -EFAULT;
188 +                       goto out_err;
189 +               }
190 +               pseg = &seg->next;
191 +               len -= alen;
192 +               src = ((char*)src)+alen;
193 +       }
194 +
195 +       err = security_msg_msg_alloc(msg);
196 +       if (err)
197 +               goto out_err;
198 +
199 +       return msg;
200 +
201 +out_err:
202 +       free_msg(msg);
203 +       return ERR_PTR(err);
204 +}
205 +
206 +int store_msg(void* dest, struct msg_msg* msg, int len)
207 +{
208 +       int alen;
209 +       struct msg_msgseg *seg;
210 +
211 +       alen = len;
212 +       if(alen > DATALEN_MSG)
213 +               alen = DATALEN_MSG;
214 +       if(copy_to_user (dest, msg+1, alen))
215 +               return -1;
216 +
217 +       len -= alen;
218 +       dest = ((char*)dest)+alen;
219 +       seg = msg->next;
220 +       while(len > 0) {
221 +               alen = len;
222 +               if(alen > DATALEN_SEG)
223 +                       alen = DATALEN_SEG;
224 +               if(copy_to_user (dest, seg+1, alen))
225 +                       return -1;
226 +               len -= alen;
227 +               dest = ((char*)dest)+alen;
228 +               seg=seg->next;
229 +       }
230 +       return 0;
231 +}
232 +
233 +#endif /* CONFIG_SYSVIPC */
234 diff -urN 2.6.0-test10-orig_1/ipc/util.h 2.6.0-test10-patched_1/ipc/util.h
235 --- 2.6.0-test10-orig_1/ipc/util.h      2003-11-07 17:07:13.000000000 +0100
236 +++ 2.6.0-test10-patched_1/ipc/util.h   2003-11-21 17:11:17.000000000 +0100
237 @@ -25,6 +25,16 @@
238         struct kern_ipc_perm* p;
239  };
240  
241 +struct msg_msgseg {
242 +       struct msg_msgseg* next;
243 +       /* the next part of the message follows immediately */
244 +};
245 +
246 +void free_msg(struct msg_msg* msg);
247 +struct msg_msg* load_msg(void* src, int len);
248 +int store_msg(void* dest, struct msg_msg* msg, int len);
249 +
250 +
251  void __init ipc_init_ids(struct ipc_ids* ids, int size);
252  
253  /* must be called with ids->sem acquired.*/
This page took 0.041203 seconds and 3 git commands to generate.