Skip to content

Commit

Permalink
macintosh/via-macii: Remove BUG_ON assertions
Browse files Browse the repository at this point in the history
The BUG_ON assertions I added to the via-macii driver over a decade ago
haven't fired AFAIK. Some can never fire (by inspection). One assertion
checks for a NULL pointer, but that would merely substitute a BUG crash
for an Oops crash. Remove the pointless BUG_ON assertions and replace
the others with a WARN_ON and an array bounds check.

Tested-by: Stan Johnson <userm57@yahoo.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
  • Loading branch information
Finn Thain authored and Michael Ellerman committed Oct 8, 2018
1 parent b52dce8 commit 5f93d70
Showing 1 changed file with 7 additions and 42 deletions.
49 changes: 7 additions & 42 deletions drivers/macintosh/via-macii.c
Original file line number Diff line number Diff line change
Expand Up @@ -120,23 +120,6 @@ static int srq_asserted; /* have to poll for the device that asserted it */
static int command_byte; /* the most recent command byte transmitted */
static int autopoll_devs; /* bits set are device addresses to be polled */

/* Sanity check for request queue. Doesn't check for cycles. */
static int request_is_queued(struct adb_request *req) {
struct adb_request *cur;
unsigned long flags;
local_irq_save(flags);
cur = current_req;
while (cur) {
if (cur == req) {
local_irq_restore(flags);
return 1;
}
cur = cur->next;
}
local_irq_restore(flags);
return 0;
}

/* Check for MacII style ADB */
static int macii_probe(void)
{
Expand Down Expand Up @@ -213,8 +196,6 @@ static void macii_queue_poll(void)
else
next_device = ffs(autopoll_devs) - 1;

BUG_ON(request_is_queued(&req));

adb_request(&req, NULL, ADBREQ_NOSEND, 1,
ADB_READREG(next_device, 0));

Expand All @@ -237,18 +218,13 @@ static int macii_send_request(struct adb_request *req, int sync)
int err;
unsigned long flags;

BUG_ON(request_is_queued(req));

local_irq_save(flags);
err = macii_write(req);
local_irq_restore(flags);

if (!err && sync) {
while (!req->complete) {
if (!err && sync)
while (!req->complete)
macii_poll();
}
BUG_ON(request_is_queued(req));
}

return err;
}
Expand Down Expand Up @@ -327,9 +303,6 @@ static int macii_reset_bus(void)
{
static struct adb_request req;

if (request_is_queued(&req))
return 0;

/* Command = 0, Address = ignored */
adb_request(&req, NULL, ADBREQ_NOSEND, 1, ADB_BUSRESET);
macii_send_request(&req, 1);
Expand All @@ -347,10 +320,6 @@ static void macii_start(void)

req = current_req;

BUG_ON(req == NULL);

BUG_ON(macii_state != idle);

/* Now send it. Be careful though, that first byte of the request
* is actually ADB_PACKET; the real data begins at index 1!
* And req->nbytes is the number of bytes of real data plus one.
Expand Down Expand Up @@ -388,7 +357,6 @@ static void macii_start(void)
static irqreturn_t macii_interrupt(int irq, void *arg)
{
int x;
static int entered;
struct adb_request *req;

if (!arg) {
Expand All @@ -399,8 +367,6 @@ static irqreturn_t macii_interrupt(int irq, void *arg)
return IRQ_NONE;
}

BUG_ON(entered++);

last_status = status;
status = via[B] & (ST_MASK|CTLR_IRQ);

Expand All @@ -409,7 +375,7 @@ static irqreturn_t macii_interrupt(int irq, void *arg)
if (reading_reply) {
reply_ptr = current_req->reply;
} else {
BUG_ON(current_req != NULL);
WARN_ON(current_req);
reply_ptr = reply_buf;
}

Expand Down Expand Up @@ -474,8 +440,8 @@ static irqreturn_t macii_interrupt(int irq, void *arg)

case reading:
x = via[SR];
BUG_ON((status & ST_MASK) == ST_CMD ||
(status & ST_MASK) == ST_IDLE);
WARN_ON((status & ST_MASK) == ST_CMD ||
(status & ST_MASK) == ST_IDLE);

/* Bus timeout with SRQ sequence:
* data is "XX FF" while CTLR_IRQ is "L L"
Expand All @@ -502,8 +468,8 @@ static irqreturn_t macii_interrupt(int irq, void *arg)
}
}

if (macii_state == reading) {
BUG_ON(reply_len > 15);
if (macii_state == reading &&
reply_len < ARRAY_SIZE(reply_buf)) {
reply_ptr++;
*reply_ptr = x;
reply_len++;
Expand Down Expand Up @@ -546,6 +512,5 @@ static irqreturn_t macii_interrupt(int irq, void *arg)
break;
}

entered--;
return IRQ_HANDLED;
}

0 comments on commit 5f93d70

Please sign in to comment.