1 --- linux-2.6.33/scripts/mod/modpost.c~ 2010-02-24 19:52:17.000000000 +0100
2 +++ linux-2.6.33/scripts/mod/modpost.c 2010-03-07 14:26:47.242168558 +0100
7 -#include "../../include/generated/autoconf.h"
8 +// PLD architectures don't use CONFIG_SYMBOL_PREFIX
9 +//#include "../../include/generated/autoconf.h"
10 #include "../../include/linux/license.h"
12 /* Some toolchains use a `_' prefix for all user symbols. */
14 --- linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh~ 2011-07-22 04:17:23.000000000 +0200
15 +++ linux-3.0/scripts/kconfig/lxdialog/check-lxdialog.sh 2011-08-25 21:26:04.799150642 +0200
17 $cc -print-file-name=lib${lib}.${ext} | grep -q /
20 + for libt in tinfow tinfo ; do
21 + $cc -print-file-name=lib${libt}.${ext} | grep -q /
22 + if [ $? -eq 0 ]; then
30 diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c
31 index 7a0c800..ec5ebbb 100644
32 --- a/drivers/net/ethernet/realtek/r8169.c
33 +++ b/drivers/net/ethernet/realtek/r8169.c
34 @@ -6927,6 +6927,14 @@ rtl_init_one(struct pci_dev *pdev, const
35 for (i = 0; i < ETH_ALEN; i++)
36 dev->dev_addr[i] = RTL_R8(MAC0 + i);
38 + if (!is_valid_ether_addr(dev->dev_addr)) {
39 + /* Report it and use a random ethernet address instead */
40 + netdev_err(dev, "Invalid MAC address: %pM\n", dev->dev_addr);
41 + random_ether_addr(dev->dev_addr);
42 + netdev_info(dev, "Using random MAC address: %pM\n",
46 SET_ETHTOOL_OPS(dev, &rtl8169_ethtool_ops);
47 dev->watchdog_timeo = RTL8169_TX_TIMEOUT;
49 [PATCH] SCSI: Don't attempt to send extended INQUIRY command if skip_vpd_pages is set
51 If a device has the skip_vpd_pages flag set we should simply fail the
52 scsi_get_vpd_page() call.
54 Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
55 Acked-by: Alan Stern <stern@rowland.harvard.edu>
56 Tested-by: Stuart Foster <smf.linux@ntlworld.com>
57 Cc: stable@vger.kernel.org
59 diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
60 index 3b1ea34..eaa808e 100644
61 --- a/drivers/scsi/scsi.c
62 +++ b/drivers/scsi/scsi.c
67 + if (sdev->skip_vpd_pages)
70 /* Ask for all the pages supported by this device */
71 result = scsi_vpd_inquiry(sdev, buf, 0, buf_len);
73 commit 4d0ed18277cc6f07513ee0b04475f19cd69e75ef
74 Author: Peter Hurley <peter@hurleysoftware.com>
75 Date: Tue Dec 10 17:12:02 2013 -0500
77 n_tty: Fix buffer overruns with larger-than-4k pastes
79 readline() inadvertently triggers an error recovery path when
80 pastes larger than 4k overrun the line discipline buffer. The
81 error recovery path discards input when the line discipline buffer
82 is full and operating in canonical mode and no newline has been
83 received. Because readline() changes the termios to non-canonical
84 mode to read the line char-by-char, the line discipline buffer
85 can become full, and then when readline() restores termios back
86 to canonical mode for the caller, the now-full line discipline
87 buffer triggers the error recovery.
89 When changing termios from non-canon to canon mode and the read
90 buffer contains data, simulate an EOF push _without_ the
91 DISABLED_CHAR in the read buffer.
93 Importantly for the readline() problem, the termios can be
94 changed back to non-canonical mode without changes to the read
95 buffer occurring; ie., as if the previous termios change had not
96 happened (as long as no intervening read took place).
98 Preserve existing userspace behavior which allows '\0's already
99 received in non-canon mode to be read as '\0's in canon mode
100 (rather than trigger add'l EOF pushes or an actual EOF).
102 Patch based on original proposal and discussion here
103 https://bugzilla.kernel.org/show_bug.cgi?id=55991
104 by Stas Sergeev <stsp@users.sourceforge.net>
106 Reported-by: Margarita Manterola <margamanterola@gmail.com>
107 Cc: Maximiliano Curia <maxy@gnuservers.com.ar>
108 Cc: Pavel Machek <pavel@ucw.cz>
109 Cc: Arkadiusz Miskiewicz <a.miskiewicz@gmail.com>
110 Acked-by: Stas Sergeev <stsp@users.sourceforge.net>
111 Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
112 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
114 diff --git a/drivers/tty/n_tty.c b/drivers/tty/n_tty.c
115 index fdc2ecd..961e6a9 100644
116 --- a/drivers/tty/n_tty.c
117 +++ b/drivers/tty/n_tty.c
118 @@ -104,6 +104,7 @@ struct n_tty_data {
120 /* must hold exclusive termios_rwsem to reset these */
121 unsigned char lnext:1, erasing:1, raw:1, real_raw:1, icanon:1;
122 + unsigned char push:1;
124 /* shared by producer and consumer */
125 char read_buf[N_TTY_BUF_SIZE];
126 @@ -341,6 +342,7 @@ static void reset_buffer_flags(struct n_tty_data *ldata)
129 bitmap_zero(ldata->read_flags, N_TTY_BUF_SIZE);
133 static void n_tty_packet_mode_flush(struct tty_struct *tty)
134 @@ -1745,7 +1747,16 @@ static void n_tty_set_termios(struct tty_struct *tty, struct ktermios *old)
136 if (!old || (old->c_lflag ^ tty->termios.c_lflag) & ICANON) {
137 bitmap_zero(ldata->read_flags, N_TTY_BUF_SIZE);
138 - ldata->line_start = ldata->canon_head = ldata->read_tail;
139 + ldata->line_start = ldata->read_tail;
140 + if (!L_ICANON(tty) || !read_cnt(ldata)) {
141 + ldata->canon_head = ldata->read_tail;
144 + set_bit((ldata->read_head - 1) & (N_TTY_BUF_SIZE - 1),
145 + ldata->read_flags);
146 + ldata->canon_head = ldata->read_head;
152 @@ -1951,6 +1962,12 @@ static int copy_from_read_buf(struct tty_struct *tty,
153 * it copies one line of input up to and including the line-delimiting
154 * character into the user-space buffer.
156 + * NB: When termios is changed from non-canonical to canonical mode and
157 + * the read buffer contains data, n_tty_set_termios() simulates an EOF
158 + * push (as if C-d were input) _without_ the DISABLED_CHAR in the buffer.
159 + * This causes data already processed as input to be immediately available
160 + * as input although a newline has not been received.
162 * Called under the atomic_read_lock mutex
164 * n_tty_read()/consumer path:
165 @@ -1997,7 +2014,7 @@ static int canon_copy_from_read_buf(struct tty_struct *tty,
169 - if (found && read_buf(ldata, eol) == __DISABLED_CHAR) {
170 + if (found && !ldata->push && read_buf(ldata, eol) == __DISABLED_CHAR) {
172 eof_push = !n && ldata->read_tail != ldata->line_start;
174 @@ -2024,7 +2041,10 @@ static int canon_copy_from_read_buf(struct tty_struct *tty,
175 ldata->read_tail += c;
178 - ldata->line_start = ldata->read_tail;
180 + ldata->line_start = ldata->read_tail;
185 return eof_push ? -EAGAIN : 0;
186 From 27095111cbafd3212c7e9a4a8cef1099b7520ca8 Mon Sep 17 00:00:00 2001
187 From: Kieran Clancy <clancy.kieran@gmail.com>
188 Date: Fri, 28 Feb 2014 14:12:28 +0000
189 Subject: ACPI / EC: Clear stale EC events on Samsung systems
191 A number of Samsung notebooks (530Uxx/535Uxx/540Uxx/550Pxx/900Xxx/etc)
192 continue to log events during sleep (lid open/close, AC plug/unplug,
193 battery level change), which accumulate in the EC until a buffer fills.
194 After the buffer is full (tests suggest it holds 8 events), GPEs stop
195 being triggered for new events. This state persists on wake or even on
196 power cycle, and prevents new events from being registered until the EC
199 This is the root cause of a number of bugs, including AC not being
200 detected properly, lid close not triggering suspend, and low ambient
201 light not triggering the keyboard backlight. The bug also seemed to be
202 responsible for performance issues on at least one user's machine.
204 Juan Manuel Cabo found the cause of bug and the workaround of polling
205 the EC manually on wake.
207 The loop which clears the stale events is based on an earlier patch by
208 Lan Tianyu (see referenced attachment).
211 - Adds a function acpi_ec_clear() which polls the EC for stale _Q
212 events at most ACPI_EC_CLEAR_MAX (currently 100) times. A warning is
213 logged if this limit is reached.
214 - Adds a flag EC_FLAGS_CLEAR_ON_RESUME which is set to 1 if the DMI
215 system vendor is Samsung. This check could be replaced by several
216 more specific DMI vendor/product pairs, but it's likely that the bug
217 affects more Samsung products than just the five series mentioned
218 above. Further, it should not be harmful to run acpi_ec_clear() on
219 systems without the bug; it will return immediately after finding no
221 - Runs acpi_ec_clear() on initialisation (boot), from acpi_ec_add()
222 - Runs acpi_ec_clear() on wake, from acpi_ec_unblock_transactions()
224 References: https://bugzilla.kernel.org/show_bug.cgi?id=44161
225 References: https://bugzilla.kernel.org/show_bug.cgi?id=45461
226 References: https://bugzilla.kernel.org/show_bug.cgi?id=57271
227 References: https://bugzilla.kernel.org/attachment.cgi?id=126801
228 Suggested-by: Juan Manuel Cabo <juanmanuel.cabo@gmail.com>
229 Signed-off-by: Kieran Clancy <clancy.kieran@gmail.com>
230 Reviewed-by: Lan Tianyu <tianyu.lan@intel.com>
231 Reviewed-by: Dennis Jansen <dennis.jansen@web.de>
232 Tested-by: Kieran Clancy <clancy.kieran@gmail.com>
233 Tested-by: Juan Manuel Cabo <juanmanuel.cabo@gmail.com>
234 Tested-by: Dennis Jansen <dennis.jansen@web.de>
235 Tested-by: Maurizio D'Addona <mauritiusdadd@gmail.com>
236 Tested-by: San Zamoyski <san@plusnet.pl>
237 Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
239 diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
240 index 959d41a..d7d32c2 100644
241 --- a/drivers/acpi/ec.c
242 +++ b/drivers/acpi/ec.c
243 @@ -67,6 +67,8 @@ enum ec_command {
244 #define ACPI_EC_DELAY 500 /* Wait 500ms max. during EC ops */
245 #define ACPI_EC_UDELAY_GLK 1000 /* Wait 1ms max. to get global lock */
246 #define ACPI_EC_MSI_UDELAY 550 /* Wait 550us for MSI EC */
247 +#define ACPI_EC_CLEAR_MAX 100 /* Maximum number of events to query
248 + * when trying to clear the EC */
251 EC_FLAGS_QUERY_PENDING, /* Query is pending */
252 @@ -116,6 +118,7 @@ EXPORT_SYMBOL(first_ec);
253 static int EC_FLAGS_MSI; /* Out-of-spec MSI controller */
254 static int EC_FLAGS_VALIDATE_ECDT; /* ASUStec ECDTs need to be validated */
255 static int EC_FLAGS_SKIP_DSDT_SCAN; /* Not all BIOS survive early DSDT scan */
256 +static int EC_FLAGS_CLEAR_ON_RESUME; /* Needs acpi_ec_clear() on boot/resume */
258 /* --------------------------------------------------------------------------
259 Transaction Management
260 @@ -440,6 +443,29 @@ acpi_handle ec_get_handle(void)
262 EXPORT_SYMBOL(ec_get_handle);
264 +static int acpi_ec_query_unlocked(struct acpi_ec *ec, u8 *data);
267 + * Clears stale _Q events that might have accumulated in the EC.
268 + * Run with locked ec mutex.
270 +static void acpi_ec_clear(struct acpi_ec *ec)
275 + for (i = 0; i < ACPI_EC_CLEAR_MAX; i++) {
276 + status = acpi_ec_query_unlocked(ec, &value);
277 + if (status || !value)
281 + if (unlikely(i == ACPI_EC_CLEAR_MAX))
282 + pr_warn("Warning: Maximum of %d stale EC events cleared\n", i);
284 + pr_info("%d stale EC events cleared\n", i);
287 void acpi_ec_block_transactions(void)
289 struct acpi_ec *ec = first_ec;
290 @@ -463,6 +489,10 @@ void acpi_ec_unblock_transactions(void)
291 mutex_lock(&ec->mutex);
292 /* Allow transactions to be carried out again */
293 clear_bit(EC_FLAGS_BLOCKED, &ec->flags);
295 + if (EC_FLAGS_CLEAR_ON_RESUME)
298 mutex_unlock(&ec->mutex);
301 @@ -821,6 +851,13 @@ static int acpi_ec_add(struct acpi_device *device)
303 /* EC is fully operational, allow queries */
304 clear_bit(EC_FLAGS_QUERY_PENDING, &ec->flags);
306 + /* Clear stale _Q events if hardware might require that */
307 + if (EC_FLAGS_CLEAR_ON_RESUME) {
308 + mutex_lock(&ec->mutex);
310 + mutex_unlock(&ec->mutex);
315 @@ -922,6 +959,30 @@ static int ec_enlarge_storm_threshold(const struct dmi_system_id *id)
320 + * On some hardware it is necessary to clear events accumulated by the EC during
321 + * sleep. These ECs stop reporting GPEs until they are manually polled, if too
322 + * many events are accumulated. (e.g. Samsung Series 5/9 notebooks)
324 + * https://bugzilla.kernel.org/show_bug.cgi?id=44161
326 + * Ideally, the EC should also be instructed NOT to accumulate events during
327 + * sleep (which Windows seems to do somehow), but the interface to control this
328 + * behaviour is not known at this time.
330 + * Models known to be affected are Samsung 530Uxx/535Uxx/540Uxx/550Pxx/900Xxx,
331 + * however it is very likely that other Samsung models are affected.
333 + * On systems which don't accumulate _Q events during sleep, this extra check
334 + * should be harmless.
336 +static int ec_clear_on_resume(const struct dmi_system_id *id)
338 + pr_debug("Detected system needing EC poll on resume.\n");
339 + EC_FLAGS_CLEAR_ON_RESUME = 1;
343 static struct dmi_system_id ec_dmi_table[] __initdata = {
345 ec_skip_dsdt_scan, "Compal JFL92", {
346 @@ -965,6 +1026,9 @@ static struct dmi_system_id ec_dmi_table[] __initdata = {
347 ec_validate_ecdt, "ASUS hardware", {
348 DMI_MATCH(DMI_SYS_VENDOR, "ASUSTek Computer Inc."),
349 DMI_MATCH(DMI_PRODUCT_NAME, "L4R"),}, NULL},
351 + ec_clear_on_resume, "Samsung hardware", {
352 + DMI_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD.")}, NULL},