size = sizeof(u32);
                        if (buffer) {
                                if (canonical_fmt)
-                                       rc = cpu_to_le32(rc);
+                                       rc = (__force int)cpu_to_le32(rc);
 
                                *(u32 *)(buffer + total_size) = rc;
                        }
 
                u8 buffer[IMA_EVENT_NAME_LEN_MAX + 1] = { 0 };
                u8 *data_to_hash = field_data[i].data;
                u32 datalen = field_data[i].len;
-               u32 datalen_to_hash =
-                   !ima_canonical_fmt ? datalen : cpu_to_le32(datalen);
+               u32 datalen_to_hash = !ima_canonical_fmt ?
+                               datalen : (__force u32)cpu_to_le32(datalen);
 
                if (strcmp(td->name, IMA_TEMPLATE_IMA_NAME) != 0) {
                        rc = crypto_shash_update(shash,
 
         * PCR used defaults to the same (config option) in
         * little-endian format, unless set in policy
         */
-       pcr = !ima_canonical_fmt ? e->pcr : cpu_to_le32(e->pcr);
+       pcr = !ima_canonical_fmt ? e->pcr : (__force u32)cpu_to_le32(e->pcr);
        ima_putc(m, &pcr, sizeof(e->pcr));
 
        /* 2nd: template digest */
 
        /* 3rd: template name size */
        namelen = !ima_canonical_fmt ? strlen(template_name) :
-               cpu_to_le32(strlen(template_name));
+               (__force u32)cpu_to_le32(strlen(template_name));
        ima_putc(m, &namelen, sizeof(namelen));
 
        /* 4th:  template name */
 
        if (!is_ima_template) {
                template_data_len = !ima_canonical_fmt ? e->template_data_len :
-                       cpu_to_le32(e->template_data_len);
+                       (__force u32)cpu_to_le32(e->template_data_len);
                ima_putc(m, &template_data_len, sizeof(e->template_data_len));
        }
 
 
            strlen(field_data->data) : field_data->len;
 
        if (show != IMA_SHOW_BINARY_NO_FIELD_LEN) {
-               u32 field_len = !ima_canonical_fmt ? len : cpu_to_le32(len);
+               u32 field_len = !ima_canonical_fmt ?
+                               len : (__force u32)cpu_to_le32(len);
 
                ima_putc(m, &field_len, sizeof(field_len));
        }
 
        if (ima_canonical_fmt) {
                if (sizeof(id) == sizeof(u16))
-                       id = cpu_to_le16(id);
+                       id = (__force u16)cpu_to_le16(id);
                else
-                       id = cpu_to_le32(id);
+                       id = (__force u32)cpu_to_le32(id);
        }
 
        return ima_write_template_field_data((void *)&id, sizeof(id),
                            struct ima_field_data *field_data)
 {
        struct inode *inode;
-       umode_t mode;
+       u16 mode;
 
        if (!event_data->file)
                return 0;
        inode = file_inode(event_data->file);
        mode = inode->i_mode;
        if (ima_canonical_fmt)
-               mode = cpu_to_le16(mode);
+               mode = (__force u16)cpu_to_le16(mode);
 
        return ima_write_template_field_data((char *)&mode, sizeof(mode),
                                             DATA_FMT_UINT, field_data);