#include <net/cipso_ipv4.h>
 #include <asm/atomic.h>
 #include <asm/bug.h>
+#include <asm/unaligned.h>
 
 struct cipso_v4_domhsh_entry {
        char *domain;
                return -EFAULT;
 
        for (iter = 0; iter < enumcat_len; iter += 2) {
-               cat = ntohs(*((__be16 *)&enumcat[iter]));
+               cat = ntohs(get_unaligned((__be16 *)&enumcat[iter]));
                if (cat <= cat_prev)
                        return -EFAULT;
                cat_prev = cat;
 
        for (iter = 0; iter < net_cat_len; iter += 2) {
                ret_val = netlbl_secattr_catmap_setbit(secattr->mls_cat,
-                                           ntohs(*((__be16 *)&net_cat[iter])),
-                                           GFP_ATOMIC);
+                               ntohs(get_unaligned((__be16 *)&net_cat[iter])),
+                               GFP_ATOMIC);
                if (ret_val != 0)
                        return ret_val;
        }
                return -EFAULT;
 
        for (iter = 0; iter < rngcat_len; iter += 4) {
-               cat_high = ntohs(*((__be16 *)&rngcat[iter]));
+               cat_high = ntohs(get_unaligned((__be16 *)&rngcat[iter]));
                if ((iter + 4) <= rngcat_len)
-                       cat_low = ntohs(*((__be16 *)&rngcat[iter + 2]));
+                       cat_low = ntohs(
+                               get_unaligned((__be16 *)&rngcat[iter + 2]));
                else
                        cat_low = 0;
 
        u16 cat_high;
 
        for (net_iter = 0; net_iter < net_cat_len; net_iter += 4) {
-               cat_high = ntohs(*((__be16 *)&net_cat[net_iter]));
+               cat_high = ntohs(get_unaligned((__be16 *)&net_cat[net_iter]));
                if ((net_iter + 4) <= net_cat_len)
-                       cat_low = ntohs(*((__be16 *)&net_cat[net_iter + 2]));
+                       cat_low = ntohs(
+                             get_unaligned((__be16 *)&net_cat[net_iter + 2]));
                else
                        cat_low = 0;
 
        }
 
        rcu_read_lock();
-       doi_def = cipso_v4_doi_search(ntohl(*((__be32 *)&opt[2])));
+       doi_def = cipso_v4_doi_search(ntohl(get_unaligned((__be32 *)&opt[2])));
        if (doi_def == NULL) {
                err_offset = 2;
                goto validate_return_locked;
        if (ret_val == 0)
                return ret_val;
 
-       doi = ntohl(*(__be32 *)&cipso_ptr[2]);
+       doi = ntohl(get_unaligned((__be32 *)&cipso_ptr[2]));
        rcu_read_lock();
        doi_def = cipso_v4_doi_search(doi);
        if (doi_def == NULL) {
        if (cipso_v4_cache_check(cipso_ptr, cipso_ptr[1], secattr) == 0)
                return 0;
 
-       doi = ntohl(*(__be32 *)&cipso_ptr[2]);
+       doi = ntohl(get_unaligned((__be32 *)&cipso_ptr[2]));
        rcu_read_lock();
        doi_def = cipso_v4_doi_search(doi);
        if (doi_def == NULL)