fw/comm/msgb: Really panic (i.e. lockup) if we run out of msgb
[osmocom-bb.git] / src / target / firmware / comm / msgb.c
index cf912ee..fbf874a 100644 (file)
@@ -45,23 +45,24 @@ static struct supermsg msgs[MSGB_NUM];
 void *_talloc_zero(void *ctx, unsigned int size, const char *name)
 {
        unsigned int i;
+
        if (size > sizeof(struct msgb) + MSGB_DATA_SIZE)
                goto panic;
 
-       while (1) {
-               for (i = 0; i < ARRAY_SIZE(msgs); i++) {
-                       if (!msgs[i].allocated) {
-                               msgs[i].allocated = 1;
-                               memset(&msgs[i].msg, 0, sizeof(&msgs[i].msg));
-                               memset(&msgs[i].buf, 0, sizeof(&msgs[i].buf));
-                               return &msgs[i].msg;
-                       }
+       for (i = 0; i < ARRAY_SIZE(msgs); i++) {
+               if (!msgs[i].allocated) {
+                       msgs[i].allocated = 1;
+                       memset(&msgs[i].msg, 0, sizeof(&msgs[i].msg));
+                       memset(&msgs[i].buf, 0, sizeof(&msgs[i].buf));
+                       return &msgs[i].msg;
                }
-               cons_puts("unable to allocate msgb\n");
-               delay_ms(50);
        }
+
 panic:
-       return NULL;
+       cons_puts("unable to allocate msgb\n");
+       while (1);
+
+       return NULL; /* not reached */
 }
 void talloc_free(void *msg)
 {