diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py
index 725cf1a1fde98610546b34721b377c6fa00ade29..83431e5ecbadeeeaf25bddd02f346699958cfc8b 100644
--- a/pyopencl/__init__.py
+++ b/pyopencl/__init__.py
@@ -757,6 +757,7 @@ def _add_functionality():
     # {{{ Kernel
 
     kernel_old_init = Kernel.__init__
+    kernel_old_get_info = Kernel.get_info
     kernel_old_get_work_group_info = Kernel.get_work_group_info
 
     def kernel_init(self, prg, name):
@@ -840,6 +841,14 @@ def _add_functionality():
         capture_kernel_call(self, filename, queue, global_size, local_size,
                 *args, **kwargs)
 
+    def kernel_get_info(self, param_name):
+        val = kernel_old_get_info(self, param_name)
+
+        if isinstance(val, _Program):
+            return Program(val)
+        else:
+            return val
+
     Kernel.__init__ = kernel_init
     Kernel._setup = kernel__setup
     Kernel.get_work_group_info = kernel_get_work_group_info
@@ -847,6 +856,7 @@ def _add_functionality():
     Kernel.set_args = kernel_set_args
     Kernel.__call__ = kernel_call
     Kernel.capture_call = kernel_capture_call
+    Kernel.get_info = kernel_get_info
 
     # }}}