Re: 3.10.20-rt17, BUG and Oops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Carsten Emde | 2013-11-30 17:40:49 [+0100]:

># addr2line -e vmlinux 0xffffffff81298301
>/usr/src/kernels/linux-3.12.0-rt2/drivers/acpi/ec.c:186
>
>        if (t->wlen > t->wi) {
>                if ((status & ACPI_EC_FLAG_IBF) == 0)
>                        acpi_ec_write_data(ec,
>---->                           t->wdata[t->wi++]);
>                else
>                        goto err;

based on the assembly, I *think* this is 
 t->wdata[x]

wher X is outside of wdata's range. But then  the pointer is almost
NULL. Could one of you check with the acpi folks if they know some
tricks how to debug this ACPI thingy?

Is this any help?

diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index a06d983..d3add07 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -175,16 +175,19 @@ static void start_transaction(struct acpi_ec *ec)
 static void advance_transaction(struct acpi_ec *ec, u8 status)
 {
 	unsigned long flags;
-	struct transaction *t = ec->curr;
+	struct transaction *t;
 
 	spin_lock_irqsave(&ec->lock, flags);
+	t = ec->curr;
 	if (!t)
 		goto unlock;
 	if (t->wlen > t->wi) {
-		if ((status & ACPI_EC_FLAG_IBF) == 0)
+		if ((status & ACPI_EC_FLAG_IBF) == 0) {
+			if (WARN_ON_ONCE(!t->wdata))
+				goto err;
 			acpi_ec_write_data(ec,
 				t->wdata[t->wi++]);
-		else
+		} else
 			goto err;
 	} else if (t->rlen > t->ri) {
 		if ((status & ACPI_EC_FLAG_OBF) == 1) {

Sebastian
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux