buf = diag204_get_buffer(INFO_EXT, &pages);
        if (!IS_ERR(buf)) {
-               if (diag204(SUBC_STIB7 | INFO_EXT, pages, buf) >= 0) {
+               if (diag204((unsigned long)SUBC_STIB7 |
+                           (unsigned long)INFO_EXT, pages, buf) >= 0) {
                        diag204_store_sc = SUBC_STIB7;
                        diag204_info_type = INFO_EXT;
                        goto out;
                }
-               if (diag204(SUBC_STIB6 | INFO_EXT, pages, buf) >= 0) {
+               if (diag204((unsigned long)SUBC_STIB6 |
+                           (unsigned long)INFO_EXT, pages, buf) >= 0) {
                        diag204_store_sc = SUBC_STIB7;
                        diag204_info_type = INFO_EXT;
                        goto out;
                rc = PTR_ERR(buf);
                goto fail_alloc;
        }
-       if (diag204(SUBC_STIB4 | INFO_SIMPLE, pages, buf) >= 0) {
+       if (diag204((unsigned long)SUBC_STIB4 |
+                   (unsigned long)INFO_SIMPLE, pages, buf) >= 0) {
                diag204_store_sc = SUBC_STIB4;
                diag204_info_type = INFO_SIMPLE;
                goto out;
        buf = diag204_get_buffer(diag204_info_type, &pages);
        if (IS_ERR(buf))
                goto out;
-       if (diag204(diag204_store_sc | diag204_info_type, pages, buf) < 0)
+       if (diag204((unsigned long)diag204_store_sc |
+                   (unsigned long)diag204_info_type, pages, buf) < 0)
                return ERR_PTR(-ENOSYS);
 out:
        return buf;