Magellan Linux

Contents of /trunk/kernel26-alx/patches-2.6.27-r3/0152-2.6.27.53-all-fixes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1176 - (show annotations) (download)
Thu Oct 14 15:11:06 2010 UTC (13 years, 7 months ago) by niro
File size: 8642 byte(s)
-2.6.27-alx-r3: new magellan 0.5.2 kernel
1 diff --git a/Makefile b/Makefile
2 index 948de60..9447d9d 100644
3 --- a/Makefile
4 +++ b/Makefile
5 @@ -440,7 +440,11 @@ ifeq ($(config-targets),1)
6 include $(srctree)/arch/$(SRCARCH)/Makefile
7 export KBUILD_DEFCONFIG
8
9 -config %config: scripts_basic outputmakefile FORCE
10 +config: scripts_basic outputmakefile FORCE
11 + $(Q)mkdir -p include/linux include/config
12 + $(Q)$(MAKE) $(build)=scripts/kconfig $@
13 +
14 +%config: scripts_basic outputmakefile FORCE
15 $(Q)mkdir -p include/linux include/config
16 $(Q)$(MAKE) $(build)=scripts/kconfig $@
17
18 @@ -1602,7 +1606,11 @@ endif
19 $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
20
21 # Modules
22 -/ %/: prepare scripts FORCE
23 +/: prepare scripts FORCE
24 + $(cmd_crmodverdir)
25 + $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
26 + $(build)=$(build-dir)
27 +%/: prepare scripts FORCE
28 $(cmd_crmodverdir)
29 $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
30 $(build)=$(build-dir)
31 diff --git a/arch/arm/include/asm/ptrace.h b/arch/arm/include/asm/ptrace.h
32 index b415c0e..1c0447e 100644
33 --- a/arch/arm/include/asm/ptrace.h
34 +++ b/arch/arm/include/asm/ptrace.h
35 @@ -124,15 +124,24 @@ struct pt_regs {
36 */
37 static inline int valid_user_regs(struct pt_regs *regs)
38 {
39 - if (user_mode(regs) && (regs->ARM_cpsr & PSR_I_BIT) == 0) {
40 - regs->ARM_cpsr &= ~(PSR_F_BIT | PSR_A_BIT);
41 - return 1;
42 + unsigned long mode = regs->ARM_cpsr & MODE_MASK;
43 +
44 + /*
45 + * Always clear the F (FIQ) and A (delayed abort) bits
46 + */
47 + regs->ARM_cpsr &= ~(PSR_F_BIT | PSR_A_BIT);
48 +
49 + if ((regs->ARM_cpsr & PSR_I_BIT) == 0) {
50 + if (mode == USR_MODE)
51 + return 1;
52 + if (elf_hwcap & HWCAP_26BIT && mode == USR26_MODE)
53 + return 1;
54 }
55
56 /*
57 * Force CPSR to something logical...
58 */
59 - regs->ARM_cpsr &= PSR_f | PSR_s | (PSR_x & ~PSR_A_BIT) | PSR_T_BIT | MODE32_BIT;
60 + regs->ARM_cpsr &= PSR_f | PSR_s | PSR_x | PSR_T_BIT | MODE32_BIT;
61 if (!(elf_hwcap & HWCAP_26BIT))
62 regs->ARM_cpsr |= USR_MODE;
63
64 diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
65 index 452c2d8..debeb88 100644
66 --- a/drivers/gpu/drm/drm_drv.c
67 +++ b/drivers/gpu/drm/drm_drv.c
68 @@ -504,7 +504,9 @@ int drm_ioctl(struct inode *inode, struct file *filp,
69 retcode = -EFAULT;
70 goto err_i1;
71 }
72 - }
73 + } else
74 + memset(kdata, 0, _IOC_SIZE(cmd));
75 +
76 retcode = func(dev, kdata, file_priv);
77
78 if ((retcode == 0) && (cmd & IOC_OUT)) {
79 diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c
80 index 3ff4895..147e044 100644
81 --- a/drivers/usb/serial/io_ti.c
82 +++ b/drivers/usb/serial/io_ti.c
83 @@ -1156,7 +1156,7 @@ static int download_fw(struct edgeport_serial *serial)
84
85 /* Check if we have an old version in the I2C and
86 update if necessary */
87 - if (download_cur_ver != download_new_ver) {
88 + if (download_cur_ver < download_new_ver) {
89 dbg("%s - Update I2C dld from %d.%d to %d.%d",
90 __func__,
91 firmware_version->Ver_Major,
92 diff --git a/drivers/usb/serial/navman.c b/drivers/usb/serial/navman.c
93 index d673653..6177d09 100644
94 --- a/drivers/usb/serial/navman.c
95 +++ b/drivers/usb/serial/navman.c
96 @@ -24,6 +24,7 @@ static int debug;
97
98 static struct usb_device_id id_table [] = {
99 { USB_DEVICE(0x0a99, 0x0001) }, /* Talon Technology device */
100 + { USB_DEVICE(0x0df7, 0x0900) }, /* Mobile Action i-gotU */
101 { },
102 };
103 MODULE_DEVICE_TABLE(usb, id_table);
104 diff --git a/firmware/Makefile b/firmware/Makefile
105 index da75a6f..5c01761 100644
106 --- a/firmware/Makefile
107 +++ b/firmware/Makefile
108 @@ -75,7 +75,7 @@ fw-shipped-$(CONFIG_VIDEO_CPIA2) += cpia2/stv0672_vp4.bin
109 fw-shipped-all := $(fw-shipped-y) $(fw-shipped-m) $(fw-shipped-)
110
111 # Directories which we _might_ need to create, so we have a rule for them.
112 -firmware-dirs := $(sort $(patsubst %,$(objtree)/$(obj)/%/,$(dir $(fw-external-y) $(fw-shipped-all))))
113 +firmware-dirs := $(sort $(addprefix $(objtree)/$(obj)/,$(dir $(fw-external-y) $(fw-shipped-all))))
114
115 quiet_cmd_mkdir = MKDIR $(patsubst $(objtree)/%,%,$@)
116 cmd_mkdir = mkdir -p $@
117 diff --git a/net/can/bcm.c b/net/can/bcm.c
118 index da0d426..be700a5 100644
119 --- a/net/can/bcm.c
120 +++ b/net/can/bcm.c
121 @@ -58,6 +58,13 @@
122 #include <net/sock.h>
123 #include <net/net_namespace.h>
124
125 +/*
126 + * To send multiple CAN frame content within TX_SETUP or to filter
127 + * CAN messages with multiplex index within RX_SETUP, the number of
128 + * different filters is limited to 256 due to the one byte index value.
129 + */
130 +#define MAX_NFRAMES 256
131 +
132 /* use of last_frames[index].can_dlc */
133 #define RX_RECV 0x40 /* received data for this element */
134 #define RX_THR 0x80 /* element not been sent due to throttle feature */
135 @@ -86,15 +93,15 @@ struct bcm_op {
136 struct list_head list;
137 int ifindex;
138 canid_t can_id;
139 - int flags;
140 + u32 flags;
141 unsigned long frames_abs, frames_filtered;
142 struct timeval ival1, ival2;
143 struct hrtimer timer, thrtimer;
144 ktime_t rx_stamp, kt_ival1, kt_ival2, kt_lastmsg;
145 int rx_ifindex;
146 - int count;
147 - int nframes;
148 - int currframe;
149 + u32 count;
150 + u32 nframes;
151 + u32 currframe;
152 struct can_frame *frames;
153 struct can_frame *last_frames;
154 struct can_frame sframe;
155 @@ -173,7 +180,7 @@ static int bcm_read_proc(char *page, char **start, off_t off,
156 len += snprintf(page + len, PAGE_SIZE - len,
157 "rx_op: %03X %-5s ",
158 op->can_id, bcm_proc_getifname(op->ifindex));
159 - len += snprintf(page + len, PAGE_SIZE - len, "[%d]%c ",
160 + len += snprintf(page + len, PAGE_SIZE - len, "[%u]%c ",
161 op->nframes,
162 (op->flags & RX_CHECK_DLC)?'d':' ');
163 if (op->kt_ival1.tv64)
164 @@ -207,7 +214,7 @@ static int bcm_read_proc(char *page, char **start, off_t off,
165 list_for_each_entry(op, &bo->tx_ops, list) {
166
167 len += snprintf(page + len, PAGE_SIZE - len,
168 - "tx_op: %03X %s [%d] ",
169 + "tx_op: %03X %s [%u] ",
170 op->can_id, bcm_proc_getifname(op->ifindex),
171 op->nframes);
172
173 @@ -288,7 +295,7 @@ static void bcm_send_to_user(struct bcm_op *op, struct bcm_msg_head *head,
174 struct can_frame *firstframe;
175 struct sockaddr_can *addr;
176 struct sock *sk = op->sk;
177 - int datalen = head->nframes * CFSIZ;
178 + unsigned int datalen = head->nframes * CFSIZ;
179 int err;
180
181 skb = alloc_skb(sizeof(*head) + datalen, gfp_any());
182 @@ -466,7 +473,7 @@ static void bcm_rx_update_and_send(struct bcm_op *op,
183 * bcm_rx_cmp_to_index - (bit)compares the currently received data to formerly
184 * received data stored in op->last_frames[]
185 */
186 -static void bcm_rx_cmp_to_index(struct bcm_op *op, int index,
187 +static void bcm_rx_cmp_to_index(struct bcm_op *op, unsigned int index,
188 struct can_frame *rxdata)
189 {
190 /*
191 @@ -548,7 +555,7 @@ static int bcm_rx_thr_flush(struct bcm_op *op)
192 int updated = 0;
193
194 if (op->nframes > 1) {
195 - int i;
196 + unsigned int i;
197
198 /* for MUX filter we start at index 1 */
199 for (i = 1; i < op->nframes; i++) {
200 @@ -597,7 +604,7 @@ static void bcm_rx_handler(struct sk_buff *skb, void *data)
201 {
202 struct bcm_op *op = (struct bcm_op *)data;
203 struct can_frame rxframe;
204 - int i;
205 + unsigned int i;
206
207 /* disable timeout */
208 hrtimer_cancel(&op->timer);
209 @@ -799,14 +806,15 @@ static int bcm_tx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg,
210 {
211 struct bcm_sock *bo = bcm_sk(sk);
212 struct bcm_op *op;
213 - int i, err;
214 + unsigned int i;
215 + int err;
216
217 /* we need a real device to send frames */
218 if (!ifindex)
219 return -ENODEV;
220
221 - /* we need at least one can_frame */
222 - if (msg_head->nframes < 1)
223 + /* check nframes boundaries - we need at least one can_frame */
224 + if (msg_head->nframes < 1 || msg_head->nframes > MAX_NFRAMES)
225 return -EINVAL;
226
227 /* check the given can_id */
228 @@ -966,6 +974,10 @@ static int bcm_rx_setup(struct bcm_msg_head *msg_head, struct msghdr *msg,
229 msg_head->nframes = 0;
230 }
231
232 + /* the first element contains the mux-mask => MAX_NFRAMES + 1 */
233 + if (msg_head->nframes > MAX_NFRAMES + 1)
234 + return -EINVAL;
235 +
236 if ((msg_head->flags & RX_RTR_FRAME) &&
237 ((msg_head->nframes != 1) ||
238 (!(msg_head->can_id & CAN_RTR_FLAG))))
239 diff --git a/scripts/mkmakefile b/scripts/mkmakefile
240 index e65d8b3..278b64e 100644
241 --- a/scripts/mkmakefile
242 +++ b/scripts/mkmakefile
243 @@ -42,7 +42,9 @@ all:
244
245 Makefile:;
246
247 -\$(all) %/: all
248 +\$(all): all
249 @:
250
251 +%/: all
252 + @:
253 EOF
254 diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
255 index e2d25da..750cb17 100644
256 --- a/security/selinux/hooks.c
257 +++ b/security/selinux/hooks.c
258 @@ -1290,7 +1290,7 @@ static int inode_doinit_with_dentry(struct inode *inode, struct dentry *opt_dent
259 /* Default to the fs superblock SID. */
260 isec->sid = sbsec->sid;
261
262 - if (sbsec->proc) {
263 + if (sbsec->proc && !S_ISLNK(inode->i_mode)) {
264 struct proc_inode *proci = PROC_I(inode);
265 if (proci->pde) {
266 isec->sclass = inode_mode_to_security_class(inode->i_mode);