[ERRCODE_OFFSET(VERIFY)]        = "Kernel verifier blocks program loading",
        [ERRCODE_OFFSET(PROG2BIG)]      = "Program too big",
        [ERRCODE_OFFSET(KVER)]          = "Incorrect kernel version",
+       [ERRCODE_OFFSET(PROGTYPE)]      = "Kernel doesn't support this program type",
 };
 
 int libbpf_strerror(int err, char *buf, size_t size)
                pr_warning("-- BEGIN DUMP LOG ---\n");
                pr_warning("\n%s\n", log_buf);
                pr_warning("-- END LOG --\n");
+       } else if (insns_cnt >= BPF_MAXINSNS) {
+               pr_warning("Program too large (%d insns), at most %d insns\n",
+                          insns_cnt, BPF_MAXINSNS);
+               ret = -LIBBPF_ERRNO__PROG2BIG;
        } else {
-               if (insns_cnt >= BPF_MAXINSNS) {
-                       pr_warning("Program too large (%d insns), at most %d insns\n",
-                                  insns_cnt, BPF_MAXINSNS);
-                       ret = -LIBBPF_ERRNO__PROG2BIG;
-               } else if (log_buf) {
-                       pr_warning("log buffer is empty\n");
-                       ret = -LIBBPF_ERRNO__KVER;
+               /* Wrong program type? */
+               if (type != BPF_PROG_TYPE_KPROBE) {
+                       int fd;
+
+                       fd = bpf_load_program(BPF_PROG_TYPE_KPROBE, insns,
+                                             insns_cnt, license, kern_version,
+                                             NULL, 0);
+                       if (fd >= 0) {
+                               close(fd);
+                               ret = -LIBBPF_ERRNO__PROGTYPE;
+                               goto out;
+                       }
                }
+
+               if (log_buf)
+                       ret = -LIBBPF_ERRNO__KVER;
        }
 
 out:
 
        LIBBPF_ERRNO__VERIFY,   /* Kernel verifier blocks program loading */
        LIBBPF_ERRNO__PROG2BIG, /* Program too big */
        LIBBPF_ERRNO__KVER,     /* Incorrect kernel version */
+       LIBBPF_ERRNO__PROGTYPE, /* Kernel doesn't support this program type */
        __LIBBPF_ERRNO__END,
 };