aboutsummaryrefslogtreecommitdiffstats
path: root/net/caif/cffrml.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/caif/cffrml.c')
-rw-r--r--net/caif/cffrml.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/net/caif/cffrml.c b/net/caif/cffrml.c
index 4f4f756c49ac..04204b202718 100644
--- a/net/caif/cffrml.c
+++ b/net/caif/cffrml.c
@@ -33,7 +33,6 @@ static void cffrml_ctrlcmd(struct cflayer *layr, enum caif_ctrlcmd ctrl,
33static u32 cffrml_rcv_error; 33static u32 cffrml_rcv_error;
34static u32 cffrml_rcv_checsum_error; 34static u32 cffrml_rcv_checsum_error;
35struct cflayer *cffrml_create(u16 phyid, bool use_fcs) 35struct cflayer *cffrml_create(u16 phyid, bool use_fcs)
36
37{ 36{
38 struct cffrml *this = kmalloc(sizeof(struct cffrml), GFP_ATOMIC); 37 struct cffrml *this = kmalloc(sizeof(struct cffrml), GFP_ATOMIC);
39 if (!this) { 38 if (!this) {
@@ -128,6 +127,13 @@ static int cffrml_receive(struct cflayer *layr, struct cfpkt *pkt)
128 cfpkt_destroy(pkt); 127 cfpkt_destroy(pkt);
129 return -EPROTO; 128 return -EPROTO;
130 } 129 }
130
131 if (layr->up == NULL) {
132 pr_err("Layr up is missing!\n");
133 cfpkt_destroy(pkt);
134 return -EINVAL;
135 }
136
131 return layr->up->receive(layr->up, pkt); 137 return layr->up->receive(layr->up, pkt);
132} 138}
133 139
@@ -150,15 +156,22 @@ static int cffrml_transmit(struct cflayer *layr, struct cfpkt *pkt)
150 cfpkt_info(pkt)->hdr_len += 2; 156 cfpkt_info(pkt)->hdr_len += 2;
151 if (cfpkt_erroneous(pkt)) { 157 if (cfpkt_erroneous(pkt)) {
152 pr_err("Packet is erroneous!\n"); 158 pr_err("Packet is erroneous!\n");
159 cfpkt_destroy(pkt);
153 return -EPROTO; 160 return -EPROTO;
154 } 161 }
162
163 if (layr->dn == NULL) {
164 cfpkt_destroy(pkt);
165 return -ENODEV;
166
167 }
155 return layr->dn->transmit(layr->dn, pkt); 168 return layr->dn->transmit(layr->dn, pkt);
156} 169}
157 170
158static void cffrml_ctrlcmd(struct cflayer *layr, enum caif_ctrlcmd ctrl, 171static void cffrml_ctrlcmd(struct cflayer *layr, enum caif_ctrlcmd ctrl,
159 int phyid) 172 int phyid)
160{ 173{
161 if (layr->up->ctrlcmd) 174 if (layr->up && layr->up->ctrlcmd)
162 layr->up->ctrlcmd(layr->up, ctrl, layr->id); 175 layr->up->ctrlcmd(layr->up, ctrl, layr->id);
163} 176}
164 177